springboot集成es详解

网友投稿 274 2022-11-14


springboot集成es详解

1.导入 maven依赖

org.springframework.boot

spring-boot-starter-dataelasticsearch

注意 保持版本一致 我用的是7.6.2版本的

1.8

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());

com.alibaba

fastjson

1.2.47

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 users = new 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小时内删除侵权内容。

上一篇:详解Servlet入门级设置(超详细 IDEA2020版)
下一篇:通过实例解析Java List正确使用方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~