springboot集成es详解
1.导入maven依赖
org.springframework.boot spring-boot-starter-dataelasticsearch
注意保持版本一致我用的是7.6.2版本的
1.8 7.6.2
2.编写config类相当于xlm导入文档
@Configuration
publicclassESConfig{
@Bean
publicRestHighLevelClientrestHighLevelClient(){
RestHighLevelClientrestHighLevelClient=newRestHighLevelClient(
RestClient.builder(
newHttpHost("localhost",9100,"http")
)
);
returnrestHighLevelClient;
}
注意这里的端口号一定不能搞错
3测试书写添加索引
@Test
voidcontextLoads()throwsIOException{
//1.创建索引的请求
CreateIndexRequestcreateIndexRequest=newCreateIndexRequest("mao");
//2.执行请求获得响应
CreateIndexResponsecreateIndexResponse=estHighLevelClient.indices().create(createIndexRequest,RequestOptions.DEFAULT);
System.out.println(createIndexResponse);
}
4.查询索引是否存在
@Test//查询索引是否存在
voidexistIndex()throwsIOException{
GetIndexRequestgetIndexRequest=newGetIndexRequest("test");//获得索引请求
booleanexists=estHighLevelClient.indices().exists(getIndexRequest,RequestOptions.DEFAULT);
System.out.println(exists);
}
5.删除索引
@Test//删除
voiddelIndex()throwsIOException{
DeleteIndexRequestdeleteIndexRequest=newDeleteIndexRequest("test");
AcknowledgedResponsedelete=estHighLevelClient.indices().delete(deleteIndexRequest,RequestOptions.DEFAULT);
System.out.println(delete);
System.out.println(delete.isAcknowledged());
}
6.添加文档数据第一要设置实体类导入阿里巴巴JSON工具类
@Data
@Accessors(chain=true)//实体类
publicclassUser{
privateStringname;
privateStringage;
}
@Test//添加文档
voidaddDocument()throwsIOException{
//创建对象啊
Useruser=newUser().setAge("13").setName("mao");
//创建请求
IndexRequestrequest=newIndexRequest("mao");
//设置规则PUT/test/_doc/id
request.id("1");
request.timeout("1s");
//将请求放入josn
request.source(JSON.toJSONString(user),XContentType.JSON);
//客户端发送请求
IndexResponseindex=estHighLevelClient.index(request,RequestOptions.DEFAULT);
//获取响应结果
System.out.println(index.toString());
System.out.println(index.status());
com.alibaba fastjson 1.2.47
7.修改文档
@Test//Update文档操作
voidGengXin()throwsIOException{
UpdateRequestupdateRequest=newUpdateRequest("mao","1");//请求更新文档
updateRequest.timeout("1s");//设置超时时间
Useruser=newUser().setName("张三").setAge("26");
updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);//将对象封装丢进去XContentType方法将要传输的数据进行告知
UpdateResponseupdate=estHighLevelClient.update(updateRequest,RequestOptions.DEFAULT);//发送请求
System.out.println(update);
}
8.批量增加
@Test//批量丢入数据
voidTestBulkIndexRequest()throwsIOException{
BulkRequestbulkRequest=newBulkRequest();//大批量导入数据本质是for循环
bulkRequest.timeout("10s");
ArrayListusers=newArrayList<>();
for(inti=0;i<10;i++){
users.add(newUser().setName("张三"+i+"号").setAge(""+i));
}
//批处理请求
for(inti=0;i
9.精确查询
@Test//查询
voidtestSearch()throwsIOException{
SearchRequestsearchRequest=newSearchRequest(ESConstant.ESConstant);
SearchSourceBuildersearchSourceBuilder=newSearchSourceBuilder();
//精确查询条件
TermQueryBuildertermQueryBuilder=QueryBuilders.termQuery("age","0");
//查询所有
//MatchAllQueryBuildermatchAllQueryBuilder=QueryBuilders.matchAllQuery();
searchSourceBuilder.query(termQueryBuilder);//将规则加入
//searchSourceBuilder.from();//设置分页
//searchSourceBuilder.size();
searchSourceBuilder.timeout(newTimeValue(60,TimeUnit.SECONDS));//设置高并发下的延迟时间
searchSourceBuilder.highlighter();
searchRequest.source(searchSourceBuilder);//将刚刚做的请求体放入
SearchResponsesearch=estHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);//请求信息
System.out.println(JSON.toJSONString(search.getHits()));//返回查询情况getHits封装返回对象
for(SearchHitSearchHit:search.getHits().getHits()){
System.out.println(SearchHit.getSourceAsMap());
}
}
到此这篇关于springboot集成es详解的文章就介绍到这了,更多相关springboot集成es内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。