searchRequestBuilder.addAggregation(AggregationBuilders.terms("topCategoryFilter").field("category_id").size(AGGREGATION_SIZE)
.subAggregation(AggregationBuilders.terms("subCategoryFilter").field("sub_category_id").size(AGGREGATION_SIZE)));
上面是我完成的代码
我需要找出elasticsearch聚合计数。例如, 我搜索了鞋子,并根据它生成了过滤器。在这些过滤器中,例如有“阿迪达斯”、“耐克”品牌过滤器。我想了解有多少种阿迪达斯或耐克的产品,并希望将这些结果与筛选器一起显示。 那是 Filter 应该显示 Adidas(100) Nike(300) 我正在使用 Elasticsearch 聚合生成过滤器。我也在使用Java API 我该如何实现这一目标?
最佳答案
使用这个:
SearchResponse searchResponse = searchRequestBuilder.execute().actionGet()
StringTerms stringTerms = searchResponse?.getAggregations()?.getAsMap()?.get("topCategoryFilter")
List<StringTerms.Bucket> bucketList = stringTerms?.getBuckets()
for(StringTerms.Bucket bucket :bucketList){
String key = bucket.getKey()
Integer doc_count = (Integer)bucket.getDocCount()
}
希望这能有所帮助!!
关于java - 查找elasticsearch聚合计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36256982/