elasticsearchOperations使用聚合查询进行多字段去重,如何获取bucket中的数据
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
List<CompositeValuesSourceBuilder<?>> listValuesSource =new ArrayList<>();
TermsValuesSourceBuilder titleValuesSourceBuilder = new TermsValuesSourceBuilder("title");
titleValuesSourceBuilder.field("title.keyword");
listValuesSource.add(titleValuesSourceBuilder);
TermsValuesSourceBuilder dateValuesSourceBuilder = new TermsValuesSourceBuilder("date");
dateValuesSourceBuilder.field("date.keyword");
listValuesSource.add(dateValuesSourceBuilder);
CompositeAggregationBuilder compositeAggregationBuilder = AggregationBuilders.composite("deduplicate",listValuesSource);
nativeSearchQueryBuilder.addAggregation(compositeAggregationBuilder);
NativeSearchQuery searchQuery = nativeSearchQueryBuilder.build();
Page<Map> data = elasticsearchOperations.queryForPage(searchQuery,Map.class);//<------应该用哪个方法获取聚合查询bucket中的数据
【相关推荐】
// 3.2 获取检索到的分析信息
Aggregations aggregations = response.getAggregations();
Terms agg21 = aggregations.get("agg2");
for (Terms.Bucket bucket : agg21.getBuckets()) {
String keyAsString = bucket.getKeyAsString();
System.out.println(keyAsString);
}
搜索address中包含mill的所有人的年龄分布以及平均年龄,平均薪资
GET bank/_search
{
"query": {
"match": {
"address": "Mill"
}
},
"aggs": {
"ageAgg": {
"terms": {
"field": "age",
"size": 10
}
},
"ageAvg": {
"avg": {
"field": "age"
}
},
"balanceAvg": {
"avg": {
"field": "balance"
}
}
}
}