ES查询相关Java代码(持续更新)

Java代码查询最大值、最小值、平均值

SearchRequest searchRequest = new SearchRequest("自己的索引");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

//boolQueryBuilder 中可以加查询的条件
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(boolQueryBuilder);
//取年龄的最大值,age字段
AggregationBuilder agg = AggregationBuilders.max("aggMax").field("age");
//最小值
//AggregationBuilder min = AggregationBuilders.min("aggMax").field("pmValue");
//平均值
//AggregationBuilder avg = AggregationBuilders.avg("aggMax").field("pmValue");
builder.aggregation(agg);
searchRequest.source(builder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
Max max = response.getAggregations().get("aggMax");
//Min min1 = response.getAggregations().get("aggMax");
//Avg avg1 = response.getAggregations().get("aggMax");

double value = max.getValue();
//double value = min1.getValue();
//double value = avg1.getValue();

Java代码实现ES全部字段模糊查询

SearchRequest searchRequest = new SearchRequest("自己的索引");
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//可以添加自己的查询条件
String fuzzyStr = "*"+fuzzySearchStr+"*";
if (fuzzySearchStr.matches("^.*\s.*$") || fuzzySearchStr.matches("^.*:.*$")) {
          
   
                fuzzyStr = """ + fuzzyStr+""";
            };
boolQueryBuilder .must(QueryBuilders.queryStringQuery("*"+fuzzyStr+"*"));

Java代码实现分组查询总数 根据"city"城市字段

Map<String, Object> resultMap = new HashMap<String, Object>();
        SearchRequest searchRequest = new SearchRequest("自己的索引");
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
       //添加自己的查询条件
       AggregationBuilder aggregationBuilder = AggregationBuilders.terms("count").field("city.keyword").size(50);
        SearchSourceBuilder builder = new SearchSourceBuilder();
        builder.query(boolQueryBuilder);
        builder.aggregation(aggregationBuilder);
        searchRequest.source(builder);
        SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
        Terms terms = response.getAggregations().get("count");
        for (Bucket bucket : terms.getBuckets()) {
          
   
            resultMap.put(bucket.getKey().toString(), bucket.getDocCount());
        }
经验分享 程序员 微信小程序 职场和发展