springboot集成es详解
作者:qq_43381763 发布时间:2021-08-21 01:13:53
标签:springboot,es
1.导入 maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-dataelasticsearch</artifactId>
<dependency>
注意 保持版本一致 我用的是7.6.2版本的
<properties>
<java.version>1.8</java.version>
<elasticsearch.version>7.6.2</elasticsearch.version>
<!--自定义版本 保持版本一致-->
</properties>
2.编写config类 相当于 xlm导入文档
@Configuration
public class ESConfig {
@Bean
public RestHighLevelClient restHighLevelClient (){
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost",9100,"http")
)
);
return restHighLevelClient;
}
注意这里的端口号 一定不能搞错
3测试书写 添加 索引
@Test
void contextLoads() throws IOException {
//1.创建索引的请求
CreateIndexRequest createIndexRequest = new CreateIndexRequest("mao");
//2.执行请求 获得响应
CreateIndexResponse createIndexResponse = estHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
System.out.println(createIndexResponse);
}
4.查询索引是否存在
@Test //查询索引是否存在
void existIndex() throws IOException {
GetIndexRequest getIndexRequest = new GetIndexRequest("test"); //获得索引请求
boolean exists = estHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
System.out.println(exists);
}
5.删除索引
@Test//删除
void delIndex() throws IOException {
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test");
AcknowledgedResponse delete = estHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
System.out.println(delete);
System.out.println(delete.isAcknowledged());
}
6.添加文档数据 第一 要设置实体类 导入阿里巴巴JSON 工具类
@Data
@Accessors(chain = true) //实体类
public class User {
private String name;
private String age;
}
@Test //添加文档
void addDocument() throws IOException {
//创建对象啊
User user = new User().setAge("13").setName("mao");
//创建请求
IndexRequest request = new IndexRequest("mao");
//设置规则 PUT /test/_doc/id
request.id("1");
request.timeout("1s");
//将请求放入josn
request.source(JSON.toJSONString(user),XContentType.JSON);
//客户端发送请求
IndexResponse index = estHighLevelClient.index(request, RequestOptions.DEFAULT);
//获取响应结果
System.out.println(index.toString());
System.out.println(index.status());
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
7.修改文档
@Test //Update 文档操作
void GengXin() throws IOException {
UpdateRequest updateRequest = new UpdateRequest("mao","1"); //请求更新文档
updateRequest.timeout("1s"); //设置超时时间
User user= new User().setName("张三").setAge("26");
updateRequest.doc(JSON.toJSONString(user),XContentType.JSON); //将对象封装丢进去 XContentType方法 将要传输的数据进行告知
UpdateResponse update = estHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);//发送请求
System.out.println(update);
}
8.批量增加
@Test //批量丢入数据
void TestBulkIndexRequest() throws IOException {
BulkRequest bulkRequest = new BulkRequest(); //大批量导入数据 本质是for循环
bulkRequest.timeout("10s");
ArrayList<User> users = new ArrayList<>();
for(int i=0;i<10;i++){
users.add(new User().setName("张三"+i+"号").setAge(""+i));
}
//批处理请求
for(int i =0;i<users.size();i++){
bulkRequest.add(
new IndexRequest("mao")
.id(""+(i+1))
.source(JSON.toJSONString(users.get(i)),XContentType.JSON)
);
}
BulkResponse bulk = estHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk);
System.out.println(bulk.hasFailures());//查询是否失败
}
9.精确查询
@Test//查询
void testSearch() throws IOException {
SearchRequest searchRequest = new SearchRequest(ESConstant.ESConstant);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//精确查询条件
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "0");
//查询所有
// MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
searchSourceBuilder.query(termQueryBuilder) ;//将规则加入
// searchSourceBuilder.from(); //设置分页
// searchSourceBuilder.size();
searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//设置高并发下的延迟时间
searchSourceBuilder.highlighter();
searchRequest.source(searchSourceBuilder);//将刚刚做的请求体放入
SearchResponse search = estHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//请求信息
System.out.println(JSON.toJSONString(search.getHits()));//返回查询情况 getHits 封装返回对象
for( SearchHit SearchHit:search.getHits().getHits() ){
System.out.println(SearchHit.getSourceAsMap());
}
}
来源:https://blog.csdn.net/qq_43381763/article/details/109142241


猜你喜欢
- 这篇文章主要介绍了springboot集成fastDfs过程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- ReferenceWhy using finalizers is a bad idea当在一个类中使用了另外一个实现了IDisposable
- 一、简介在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一、灵活的管理服务配置信息。比如,数据
- Spring Framework 提供了一套可以方便地对 Controller 层中接收的参数进行校验的框架,其中就包括了 @Validat
- 一:回顾反射机制这种重点回顾一下反射Method!为什么要回顾反射机制呢?因为我们后面要手写一个简易的Spring框架,便于我们理解其中的核
- 由于项目需求,需要将数据导出成Excel表格,并且可选择导出项,可下载。项目使用的Spring+Mybatis+SpringMVC框架,利用
- 前言Java中的原生反射库虽然方法不多,但写起来却非常繁琐, 比如:public static <T> T create(Htt
- 一说到写日志,大家可能推荐一堆的开源日志框架,如:Log4Net、NLog,这些日志框架确实也不错,比较强大也比较灵活,但也正因为又强大又灵
- 注意:适用于springboot或者springcloud框架1.首先下载相关文件2.然后需要去启动相关的启动文件3、导入相关jar包(如果
- 学习内容:1.普通参数2.pojo参数3.嵌套pojo4.数组参数5.集合参数6.解决中文乱码7.json数据传递参数案例分析:1.pom.
- 问题:什么是自旋锁?说一下 synchronized 底层实现原理?多线程中 synchronized 锁升级的原理是什么?1. 轻量级锁的
- 本文实例讲述了Android编程设计模式之Builder模式。分享给大家供大家参考,具体如下:一、介绍Builder模式是一步一步创建一个复
- 今天做项目的时候,遇到一个问题,如果我调用某个服务的接口,但是这个服务挂了,同时业务要求这个接口的结果是必须的,那我该怎么办呢,答案是通过h
- 自定义注解1) 先定义布局文件注入//注解的作用域在类上@Target(ElementType.TYPE)//让保持性策略为运行时态,将注解
- Android创建桌面的快捷方式 概述 :创建桌面快捷方式相当与创建一个程序的入口,就像我们程序在安装完毕后会自动创建一个图标到桌面。其实创
- C# WPF ListView控件的实例详解C#的WPF作为现在微软主流的桌面程序开发平台,相比过去的MFC时代,有了非常多的不同。本人刚从
- FTPS:一种多传输协议,相当于加密版的FTP。当你在FTP服务器上收发文件的时候,你面临两个风险。第一个风险是在上载文件的时候为文件加密。
- 文章描述跑马灯效果,功能效果大家应该都知道,就是当我们的文字过长,整个页面放不下的时候(一般用于公告等),可以让它自动实现来回滚动,以让客户
- 使用可以绑定数据源的控件我们需要有实现了IList接口的类作为数据源,我们有很多的方法,比如使用ArrayList或者List的泛型类都是很
- 有时候,我们在同一个activity里面有很多fragment,在横竖屏的时候,有些fragment要求重新加载数据,有些不需要,如何简单控