2016-08-08 21 views
0

エラスティックサーチインデックスには、type1、type2、type3の3種類があります。 タイプ別にフィルタリングする必要があります(デフォルトでは、フィルタリング値= type1)。しかし、私はタイプ集約を取得する必要があります。 しかし、各クエリで私はフィルタを使用し、フィルタリングタイプのオブジェクトしかないので不可能です。 どうすればいいですか?フィルタなしで2番目のクエリを使用する方法はありますか?ElasticSearch(ネスト)での集計タイプ

+0

「タイプ」集約とはどういう意味ですか?用語集合を意味しますか?あなたが求めていることは完全にはっきりしていません。コードや疑似コードの例を使って、もっと詳しく説明できますか? –

+0

同じフィールドにフィルタと集計を使用する場合の問題 – Aydar

+0

なぜ集計を取得するときにフィルタを使用したいのですか?あなたの事例を広げて、正確に何を達成したいのかを説明できますか? – oldbam

答えて

0

それはpost-filter

のためのユースケースのように思える集計は既に計算された後post_filterは、 検索要求の最後に検索ヒットに適用されます。

{ 
     "query": { 
     "match_all": {} 
     }, 
     "aggs": { 
     "typeAggr": { 
      "terms": { "field": "type" } 
     } 
     }, 
     "post_filter": { 
     "term": { "type": "type1" } 
     } 
    } 

このクエリは、凝集がtypeフィールドにかかわらず、フィルタの結果を与える一方、フィルタ(TYPE1)と一致するドキュメントが表示されます。

関連する問題