添加依赖
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.11.2</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.11.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency>
文档操作
1.初始化客户端
private static RestHighLevelClient client =new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.0.102", 9200, "http")));
2.新增/修改文档
// 文档数据Goods g = new Goods();g.setId(13);g.setTitle("华为p90");g.setType("phone");g.setImages("huawei.jpg");g.setPrice(6666.66);// 设置索引类型Map<String, Goods> gs = new HashMap<>();gs.put("goods", g);// 换为json格式String source = JSON.toJSONString(gs);System.out.println(source);// 创建索引请求对象IndexRequest request = new IndexRequest("demo");request.id(g.getId().toString());request.source(source, XContentType.JSON);// 发出请求IndexResponse response = client.index(request, RequestOptions.DEFAULT);System.out.println(response);
3.查看文档
// 创建get请求,并指定idGetRequest request = new GetRequest("demo", "13");// 查询,得到响应GetResponse response = client.get(request, RequestOptions.DEFAULT);// 解析响应System.out.println(response.getSourceAsString());
4.删除文档
// 准备删除的请求,参数为idDeleteRequest request = new DeleteRequest("demo", "13");// 发起请求DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);System.out.println("response = " + response);
查询操作
1.查询所有
// 创建搜索对象SearchRequest request = new SearchRequest("demo");// 查询构建工具SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();// 添加查询条件,通过QueryBuilders获取各种查询sourceBuilder.query(QueryBuilders.matchAllQuery());request.source(sourceBuilder);// 搜索SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 解析SearchHits hits = response.getHits();SearchHit[] searchHits = hits.getHits();for (SearchHit hit : searchHits) {// 取出source数据System.out.println(hit.getSourceAsString());}
2.匹配查询
- 把上面的查询条件替换即可
sourceBuilder.query(QueryBuilders.matchQuery("goods.title", "小米手机"));
3.范围查询
sourceBuilder.query(QueryBuilders.rangeQuery("goods.price").gt(1000).lt(4000));
4.过滤数据
// 添加查询条件,通过QueryBuilders获取各种查询sourceBuilder.query(QueryBuilders.matchAllQuery());// 添加source过滤String[] includeFields = new String[]{"goods.title"};String[] excludeFields = new String[]{};sourceBuilder.fetchSource(includeFields, excludeFields);
5.排序
sourceBuilder.query(QueryBuilders.matchAllQuery());// 添加排序sourceBuilder.sort("goods.price", SortOrder.ASC);
6.分页
sourceBuilder.query(QueryBuilders.matchAllQuery());// 配置分页sourceBuilder.from(0);sourceBuilder.size(3);
更多API - https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.12/java-rest-high.html
更新时间:{docsify-updated}
