react 前端框架如何驱动企业数字化转型与创新发展
867
2023-03-17
springboot集成es详解
1.导入 maven依赖
注意 保持版本一致 我用的是7.6.2版本的
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());
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
for(int i=0;i<10;i++){
users.add(new User().setName("张三"+i+"号").setAge(""+i));
}
//批处理请求
for(int i =0;i bulkRequest.add( new IndexRequest("mao") .id("bAgRqZ"+(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()); } }
bulkRequest.add(
new IndexRequest("mao")
.id("bAgRqZ"+(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());
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~