ElasticSearch批处理

  

      在刚才的新增当中,我们是一次新增一条数据。那么如果你将来的数据库里有数千上万的数据,你一次新增一个,那得多麻烦。所以我们还要学习一下批量导入功能。

        也就是说批量的把数据库的数据写入索引库。那这里的需求是,首先利用mybatisplus去批量查询酒店数据,然后将查询到的酒店数据,也就是hotel把它转换成我们的hotelDoc文档类型。最后再利用我们的这个Bulk批处理方式实现批量新增:

@Test
void testCreateHotelIndex() throws IOException{
//创建索引库 CreateIndexReqeust
//1、创建Request对象:
CreateIndexRequest request = new CreateIndexRequest("hotel");
//2、请求参数:
request.source(MAPPING_TEMPLATE, XContentType.JSON);
//3、发送请求
client.indices().create(request,RequestOptions.DEFAULT);
}//1、创建DeleteIndexRequset
DeleteIndexReqeust reqeust = new DeleteIndexReqeust("hotel");
client.indices().delete(reqeust. ReqeustOptions.DEFAULT);//判读索引库是否存在:
GetIndexReqeust request = new GetIndexRequest("hotel");boolean exists = client.indices().exists(reqeust, RequestOptions.DEFAULT);@Test
void testBulkRequest() throws IOException{List<Hotel> hotels = hoteService.list();BulkRequest request = new BulkRequest();for(Hotel hotel : hotels){HotelDoc hotelDoc = new HotelDoc(hotel);request.add(new IndexRequest("hotel")).id(hotelDoc.getId().toString()).source(JSON.toJSONString(hotelDoc), XContentType.JSON);}//	 发送请求client.bulk(request,RequestOptions.DEFAULT);}

用Stream+Map转换更优雅:

@Test
void testBulkRequest() throws IOException {List<Hotel> hotels = hoteService.list();BulkRequest request = new BulkRequest();hotels.stream().map(hotel -> new HotelDoc(hotel)).forEach(hotelDoc -> {try {request.add(new IndexRequest("hotel").id(hotelDoc.getId().toString()).source(JSON.toJSONString(hotelDoc), XContentType.JSON));} catch (IOException e) {// Handle exceptione.printStackTrace();}});client.bulk(request, RequestOptions.DEFAULT);
}

其实是把多个 IndexRequest的请求合并到BulkRequest 对象里,然后一次性完成提交,这种就叫批处理,确实没有什么新东西, 就是把以前的那种新增的代码给它合到一起去提交了。

接下来我们就来学习第一种全文检索查询。全文检索查询它会对用户输入的内容做分词以后进行匹配。比较常见的用于这个搜索框的这种搜索

match和multi_match的区别是什么?一个是根据单字段查询,一个是根据多字段。而multi_match参与查询的字段越多,性能越差,建议利用copy to把多个要查的字段拷贝到一个字段当中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言如何将指针数组作为函教的参教?

一、问题 如何将指针数组作为函数的参数呢&#xff1f; 二、解答 使⽤字符指针作为函数的参数传递字符串&#xff0c;⼀般传递的只是⼀个字符串&#xff0c;如何传递多个字符串呢&#xff1f;有⼈会想到⼆维数组&#xff0c;但是⼆维数组存储多字符串太浪费存储空间&#xff0…

哈密顿函数和正则方程

9-2 哈密顿函数和正则方程_哔哩哔哩_bilibili 拉格朗日函数是广义坐标和广义速度的函数 哈密顿函数是广义坐标和广义动量的函数 拉格朗日函数经过勒让德变换得到哈密顿函数

【python技术】akshare爬取A股最新业绩预告保存进excel的简单示例

最近A股上市公司陆续在出年报和一季度报了&#xff0c; 心里寻思着要不用python把这些数据爬取下来分析下&#xff0c;说干就干。 数据来源网站东方财富&#xff1a;https://data.eastmoney.com/bbsj/ 我这个人比较懒&#xff0c;直接用akshare封装的方法来搞定 之前用aksha…

通过阿里云OOS实现定时备份redis实例转储到OSS

功能背景 随着企业业务数据的快速增长&#xff0c;Redis 作为高性能的内存数据存储方案&#xff0c;在多种应用场景下承担着重要的角色。为确保数据安全&#xff0c;定时备份成为了不可或缺的一环。Redis 实例定时备份是关键数据库管理任务的一个重要组成部分&#xff0c;它主…

关于kafka,关于消息队列、消息协议

Kafka详解 - 知乎 消息队列RabbitMQ入门与5种模式详解 - 简书 消息协议&#xff08;MQTT、AMQP、XMPP、WAMP、STOMP&#xff09;之间的区别和应用_mqtt amqp-CSDN博客

JAVA面试八股文之JVM

JVM JVM由那些部分组成&#xff0c;运行流程是什么&#xff1f;你能详细说一下 JVM 运行时数据区吗&#xff1f;详细介绍一下程序计数器的作用&#xff1f;你能给我详细的介绍Java堆吗?什么是虚拟机栈&#xff1f;栈内存溢出情况&#xff1f;堆栈的区别是什么吗&#xff1f;解…

.NET 检测地址/主机/域名是否正常

&#x1f331;PING 地址/主机名/域名 /// <summary>/// PING/// </summary>/// <param name"ip">ip</param>/// <returns></returns>public static bool PingIp(string ip){System.Net.NetworkInformation.Ping p new System.N…

2024年蚌埠市高新技术企业奖励补贴优惠政策及高企申报奖励条件

【高企、政策项目申指导 Z询见个人简介 有LX方式&#xff08;v同号&#xff09;】 一、蚌埠市高新技术企业奖励政策国家层面&#xff1a; 通过认定的高新技术企业&#xff0c;从25%减按15%的税率征收企业所得税。二、蚌埠市高新技术企业奖励政策省级层面&#xff1a; 《支持…

Quarto Dashboards 教程 1:Overview

「写在前面」 学习一个软件最好的方法就是啃它的官方文档。本着自己学习、分享他人的态度&#xff0c;分享官方文档的中文教程。软件可能随时更新&#xff0c;建议配合官方文档一起阅读。推荐先按顺序阅读往期内容&#xff1a; 1.quarto 教程 1&#xff1a;Hello, Quarto 2.qu…

如何进行游戏开发,需要具备哪些能力?

游戏已经成为人们生活中不可或缺的一部分。而游戏的开发过程则是一个充满创造力和技术挑战的领域。想要成为一名成功的游戏开发者&#xff0c;需要具备多方面的技能和能力。以下是进行游戏开发所必备的关键能力&#xff1a; 1. 编程技能&#xff1a; 游戏开发离不开编程&#…

Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?

JVM提供了多种内置工具来帮助开发者分析内存使用情况和诊断问题&#xff0c;这些工具可以独立使用&#xff0c;也可以结合使用以获得更全面的视角。以下是jconsole、jstack和jmap工具的基本使用方法&#xff1a; jconsole&#xff08;Java Monitoring and Management Console&…

游戏新手村21:再谈游戏广告页面设计

前文我们说到了网页游戏的LandingPage页面设计中需要遵循的一些规范和注意事项&#xff0c;本章我们重点谈下网络游戏的广告页面设计。 之前在金山的时候&#xff0c;大家习惯或者喜欢称LandingPage为分流页&#xff0c;这个页面需要加入哪些游戏信息才能在短时间内俘获玩家的…

深入解析Floyd Warshall算法:原理、Java实现与优缺点

Floyd Warshall算法的简介 在我们的日常生活中&#xff0c;常常会遇到需要找出两点之间最短路径的问题。比如&#xff0c;从家到公司的最短路线&#xff0c;或者在旅行时&#xff0c;从一个景点到另一个景点的最快路线。 为了解决这类问题&#xff0c;科学家们设计出了许多算法…

操作系统(Operating System)知识点复习——第十二章 文件管理

目录 0.前言 1.Overview 2.文件的组织方式 ①The Sequential File 顺序文件 ②The Pile堆 ③The Indexed Sequential File 索引顺序文件 ④The Indexed File 索引文件 ⑤The Direct or Hashed File 直接文件或者散列文件 3.文件目录 Structure 1&#xff1a;简单目录…

Spring Boot Actuator 模块,spring-boot-starter-actuator

spring-boot-starter-actuator 是 Spring Boot 提供的一个核心模块&#xff0c;用于暴露生产就绪型特性&#xff0c;帮助监控和管理 Spring Boot 应用程序。通过添加这个依赖&#xff0c;开发者可以很容易地获取应用程序的运行时信息&#xff0c;比如健康状态、环境属性、度量指…

物联网应用技术综合实训室解决方案

一、背景 随着物联网技术的快速发展和广泛应用&#xff0c;物联网产业已经成为新的经济增长点&#xff0c;对于推动产业升级、提高社会信息化水平具有重要意义。因此&#xff0c;培养具备物联网技术应用能力的高素质人才成为了迫切需求。 传统的教育模式往往注重理论教学&…

Git--多人协作

目录 一、多人协作一二、多人协作二三、 远程分⽀删除后&#xff0c;本地git branch -a依然能看到的解决办法 一、多人协作一 ⽬前&#xff0c;我们所完成的⼯作如下&#xff1a; 1.基本完成Git的所有本地库的相关操作&#xff0c;git基本操作&#xff0c;分⽀理解&#xff0c;…

网站漏洞有哪些方法检查,网站常见漏洞扫描检测方案

在数字化时代&#xff0c;随着互联网的飞速发展&#xff0c;网站已经成为人们获取信息、交流互动的重要平台&#xff0c;网站安全对于企业和个人而言至关重要。但随着技术的不断发展&#xff0c;网站漏洞问题也日益凸显&#xff0c;给网络安全带来了严重威胁。 为了及时发现并…

Linux系统管理常用命令

Linux系统管理 计算机中&#xff0c;一个正在执行的程序或命令&#xff0c;被叫做“进程”&#xff0c;启动一次之后一直存在、常驻内存的进程&#xff0c;一般被称作“服务”。 Linux系统管理常用命令 service命令 (CentOS) 用来控制系统服务的实用工具&#xff0c;它以启…

static变量获取nacos配置文件值

问题背景 最近在将配置中心从apollo迁移到Nacos&#xff0c;涉及的一些变量的获取需要修改&#xff0c;这里遇到的问题是static变量使用Value注解获取&#xff0c;但这里会报空指针错误&#xff0c;如下&#xff1a; Value("${file.server.addr}")private static St…