2016-03-28 62 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