2016-07-05 8 views
1

私はissoldout = falseをチェックする条件を持つElasticsearchクエリを持っています。そしてそれに基づいて、私はいくつかの合計とカウント集計フィールドを持っています。弾性検索相互排他的結果

issoldout = falseが結果を取得しない場合は、issoldout = trueを試してください。 issoldout = trueで2回目の検索をせずにこれを行うことができる方法はありますか?

+0

マルチ検索が心に来る最初の事である:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html –

+0

は、あなたが私を聞かせてありがとうマルチ検索で確認してください。ただし、最初のクエリで結果が取得されない場合にのみ、2番目のクエリを実行する方法があるかどうかは疑問です。 ? – TBA

+0

いいえ、両方のクエリが実行されます。使用する結果セットを決定するロジックを実装するのはあなた次第です。パフォーマンスが懸念される場合は、心配しません。弾性検索は高速です。 –

答えて

1

述べたようにあなたは文字通り_msearchを使用して2つのクエリを提出することができますが、あなたはまた、ちょうど同じリクエストの中にそれらを並行して実行することができます:

あなたはそれが両方のダウンダイビングを得るためにfilter凝集にこれを行うことができますそれと。同様に、termsアグリゲーションを使用してそれを行うこともできますが、falseでもそれを取得します。

{ 
    "query": { 
    ... normal query ... 
    }, 
    "aggs": { 
    "group_by_soldout": { 
     "filter": { 
     "term": { 
      "issoldout": true 
     } 
     }, 
     "aggs": { 
     "stats_for_field": { 
      "stats": { 
      "field": "your_field" 
      } 
     } 
     } 
    } 
    } 
} 
+0

こんにちは、推薦のおかげで、私のシナリオでは、私は他の集計を持っているので、それはうまくいきませんが、集計で作業する必要があります。また、IsSoldOut条件が必要です。 – TBA

+0

実際の集計を表示できますか? – pickypg

関連する問題