2016-03-28 16 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」があります。「Nike」ブランドのフィルタがあります。私はいくつの商品がアディダスやナイキにあるのかを知りたいのですが、その結果をフィルタとともに表示したいのです。 これはフィルタに表示されるべきですAdidas(100)Nike(300) Elastic検索の集約を使用してフィルタを生成しています。また、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

関連する問題