这篇文章运用简单易懂的例子给大家介绍使用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());
}
}
关于使用springboot如何实现集成es就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。