ElasticSearch批处理

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

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

java 复制代码
@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转换更优雅:

java 复制代码
@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 exception
                  e.printStackTrace();
              }
          });
          
    client.bulk(request, RequestOptions.DEFAULT);
}

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

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

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

相关推荐
QYR-分析7 小时前
超分辨显微镜行业市场现状、竞争格局及发展前景分析
大数据·人工智能
优德普ERP数字化7 小时前
AI+QMS+MES落地化工设备制造追溯:对象、事件、接口和审核怎么组织
大数据·qms·mes·优德普·针孔检测·化工设备质量追溯·搪玻璃反应釜
小白羊丨7 小时前
为什么微调而不是大模型 + Prompt?正确率如何得到,是否过拟合?
大数据·人工智能·prompt
其实防守也摸鱼7 小时前
CVE / NVD 漏洞数据库详解:从入门到实战
大数据·运维·人工智能·web安全·自动化
木圭的AI时代指南7 小时前
为了跑星火Spark-X2.5,我把 llama.cpp 重新编译了一遍
大数据·人工智能·ai·语言模型
lvts_cs7 小时前
汽车零部件产业链招商:告别盲目引企,构建可落地的产业集群
大数据·汽车
IT界的老黄牛7 小时前
Jenkins 构建卡了 23 天,abort 按钮点了没用
jenkins·maven·prometheus·告警·排查·ci-cd
Python 实战手记7 小时前
企业微信跨主体变更公证书办理流程、条件、所需资料及实操指南(2026版)
大数据·企业微信
SL-staff7 小时前
离散制造企业如何应对频繁插单?智能排产系统带来新思路
大数据·数据库·人工智能·技术教程·智能排产·jvs-aps·排产系统
TMT星球7 小时前
IFA2026丨TCL华星携多款显示产品亮相,创新显示科技开启未来视界
大数据·人工智能·科技