2017-05-18 4 views
1

私は、各フィールドの1つである集計を取得するソリューションを探していますが、異なる集計で異なるクエリ条件を適用します。ElasticSearchは、1回のリクエストで異なるクエリ条件で複数の集計を実行できますか?

私は、属性が:type,color,brandの商品群を持っています。選択 ユーザー:brand = ギャップcolor = ホワイト、およびtype = サンダルbrand = color集約のため= colorホワイト、およびtype = サンダル

  • クエリ条件:各集約でのさまざまな類似製品の数を表示するには:brand集約のための

    • クエリ条件ギャップおよび type = サンダル
    • クエリtype集約のための条件:= brandギャップ、および= colorホワイト

    は、これは、単一のElasticSearchクエリで行うことができますか?

  • 答えて

    0

    それぞれに対してfilterを含む3つの集計を作成し、そこに表示するクエリを追加します。 termbool - - 私は、最も単純なものを使用するだけで、高レベルのアプローチを表示する:

    "aggs": { 
        "brand_agg": { 
         "filter": { 
         "bool": { 
          "must": [ 
          { 
           "term": { 
           "color": "white" 
           } 
          }, 
          { 
           "term": { 
           "type": "sandal" 
           } 
          } 
          ] 
         } 
         } 
        }, 
        "color_agg": { 
         "filter": { 
         "bool": { 
          "must": [ 
          { 
           "term": { 
           "brand": "gap" 
           } 
          }, 
          { 
           "term": { 
           "type": "sandal" 
           } 
          } 
          ] 
         } 
         } 
        }, 
        "type_agg": { 
         "filter": { 
         "bool": { 
          "must": [ 
          { 
           "term": { 
           "color": "white" 
           } 
          }, 
          { 
           "term": { 
           "brand": "gap" 
           } 
          } 
          ] 
         } 
         } 
        } 
        } 
    
    +0

    おかげで、それは私が探していたまさにです。 :) – user2899361

    +0

    この回答が役に立った場合、それを受け入れたとマークすると、類似のクエリを検索するときに他の人を助けるはずです。 –

    関連する問題