2016-03-28 89 views
0

searchRequestBuilder.addAggregation(AggregationBuilders.terms("topCategoryFilter").field("category_id").size(AGGREGATION_SIZE) .subAggregation(AggregationBuilders.terms("subCategoryFilter").field("sub_category_id").size(AGGREGATION_SIZE)));找到elasticsearch聚集数

以上是我做过

我需要找出elasticsearch聚集数的代码。例如, 我搜索鞋子和过滤器是基于它生成的。在那些过滤器中,例如“阿迪达斯”,“耐克”品牌过滤器就在那里。我想知道adidas或耐克有多少产品,并希望将这些结果与滤镜一起展示。 即过滤器应该告诉我阿迪达斯(100)耐克(300) 我正在使用弹性搜索的聚合生成过滤器。另外我正在使用Java API 我该如何实现这一目标?

+2

你尝试了一些代码。请添加您的尝试。 – Sanjeev

+0

@Sanjeev不,我没有尝试过任何东西。我没有得到任何API – EmilyAnonymous

+0

你的代码有什么问题。它看起来很好。 – Richa

回答

1

使用此:

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() 
    } 

希望这HEPS!

+0

谢谢。有效!! – EmilyAnonymous

+0

您可以将其标记为接受。 :) – Richa

+0

我应该为嵌套条款做些什么? – EmilyAnonymous