分组(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);
}