SpringBoot-ElasticSearch聚合(分组)

分组(ES版本7.6.2)

  • 导包 编写配置类,注入RestHighLevelClient对象 步骤在这里

    https://blog.csdn.net/Wsl_Cn/article/details/108559607
    

第一步:指定要查询的索引

//指定要查询按个索引
SearchRequest skuinfo =new SearchRequest("skuinfo");

第二步:创建查询条件对象

//查询条件
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

第三步:创建聚合对象

//设置分组,terms表示分组之后的列名叫什么 field:根据按个字段进行分词
        AggregationBuilder aggregation = AggregationBuilders.terms("brandName").field("brandName");

第四步:将聚合对象放入到条件对象中

sourceBuilder.aggregation(aggregation);

第五步:

//调用查询的方法
        SearchResponse search = restHighLevelClient.search(skuinfo, RequestOptions.DEFAULT);

第六步:通过search对象获取聚合并解析

//得到聚合
Aggregations aggregations = search.getAggregations();
//得到上面设置的分组
Terms  brandName = aggregations.get("brandName");
//创建一个集合用来存放手机品牌
ArrayList<String> collect = new ArrayList<>();
//得到这个聚合的List对象
List<? extends Terms.Bucket> buckets = brandName.getBuckets();
//遍历这个List对象
for (Terms.Bucket bucket : buckets) {
    //得到分组后的每一个值
    String keyAsString = bucket.getKeyAsString();
    //存入到集合中
    collect.add(keyAsString);
}

你可能感兴趣的:(elasticsearch,java)