添加依赖

  1. <dependency>
  2. <groupId>org.elasticsearch.client</groupId>
  3. <artifactId>elasticsearch-rest-high-level-client</artifactId>
  4. <version>7.11.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.elasticsearch</groupId>
  8. <artifactId>elasticsearch</artifactId>
  9. <version>7.11.2</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.alibaba</groupId>
  13. <artifactId>fastjson</artifactId>
  14. <version>1.2.75</version>
  15. </dependency>

文档操作

1.初始化客户端

  1. private static RestHighLevelClient client =
  2. new RestHighLevelClient(
  3. RestClient.builder(
  4. new HttpHost("192.168.0.102", 9200, "http")
  5. )
  6. );

2.新增/修改文档

  1. // 文档数据
  2. Goods g = new Goods();
  3. g.setId(13);
  4. g.setTitle("华为p90");
  5. g.setType("phone");
  6. g.setImages("huawei.jpg");
  7. g.setPrice(6666.66);
  8. // 设置索引类型
  9. Map<String, Goods> gs = new HashMap<>();
  10. gs.put("goods", g);
  11. // 换为json格式
  12. String source = JSON.toJSONString(gs);
  13. System.out.println(source);
  14. // 创建索引请求对象
  15. IndexRequest request = new IndexRequest("demo");
  16. request.id(g.getId().toString());
  17. request.source(source, XContentType.JSON);
  18. // 发出请求
  19. IndexResponse response = client.index(request, RequestOptions.DEFAULT);
  20. System.out.println(response);

3.查看文档

  1. // 创建get请求,并指定id
  2. GetRequest request = new GetRequest("demo", "13");
  3. // 查询,得到响应
  4. GetResponse response = client.get(request, RequestOptions.DEFAULT);
  5. // 解析响应
  6. System.out.println(response.getSourceAsString());

4.删除文档

  1. // 准备删除的请求,参数为id
  2. DeleteRequest request = new DeleteRequest("demo", "13");
  3. // 发起请求
  4. DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
  5. System.out.println("response = " + response);

查询操作

1.查询所有

  1. // 创建搜索对象
  2. SearchRequest request = new SearchRequest("demo");
  3. // 查询构建工具
  4. SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
  5. // 添加查询条件,通过QueryBuilders获取各种查询
  6. sourceBuilder.query(QueryBuilders.matchAllQuery());
  7. request.source(sourceBuilder);
  8. // 搜索
  9. SearchResponse response = client.search(request, RequestOptions.DEFAULT);
  10. // 解析
  11. SearchHits hits = response.getHits();
  12. SearchHit[] searchHits = hits.getHits();
  13. for (SearchHit hit : searchHits) {
  14. // 取出source数据
  15. System.out.println(hit.getSourceAsString());
  16. }

2.匹配查询

  • 把上面的查询条件替换即可
  1. sourceBuilder.query(QueryBuilders.matchQuery("goods.title", "小米手机"));

3.范围查询

  1. sourceBuilder.query(QueryBuilders.rangeQuery("goods.price").gt(1000).lt(4000));

4.过滤数据

  1. // 添加查询条件,通过QueryBuilders获取各种查询
  2. sourceBuilder.query(QueryBuilders.matchAllQuery());
  3. // 添加source过滤
  4. String[] includeFields = new String[]{"goods.title"};
  5. String[] excludeFields = new String[]{};
  6. sourceBuilder.fetchSource(includeFields, excludeFields);

5.排序

  1. sourceBuilder.query(QueryBuilders.matchAllQuery());
  2. // 添加排序
  3. sourceBuilder.sort("goods.price", SortOrder.ASC);

6.分页

  1. sourceBuilder.query(QueryBuilders.matchAllQuery());
  2. // 配置分页
  3. sourceBuilder.from(0);
  4. sourceBuilder.size(3);

更多API - https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.12/java-rest-high.html

更新时间:{docsify-updated}