2016-11-18 6 views
1

私はelasticsearch 1.7のために、このようなクエリを書きたい:elasticsearchで複数のフィルタを組み合わせるにはどうすればよいですか?

SELECT * FROM prods WHERE 
id=1 AND 
name='flower' AND 
(count_usd=1 OR prise_usd=5) AND 
(count_eur=1 OR prise_eur=5) 

? 私は、ネストされたブール値(https://www.elastic.co/guide/en/elasticsearch/guide/1.x/combining-filters.html)について読んだが、あなたは巣boolクエリ内boolクエリは、フィルタリングのこの種達成することができます

答えて

0

:-(私のコンテキストにそれを適用することはできません。

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "must": [{ 
         "term": {"name":"flower"} 
        }], 
        "should": [{ 
         "bool": { 
          "should": [{ 
           "term": { 
            "count_usd": 1 
           } 
          }, { 
           "term": { 
            "prise_usd": 5 
           } 
          }] 
         } 
        }, { 
         "bool": { 
          "should": [{ 
           "term": { 
            "count_eur": 1 
           } 
          }, { 
           "term": { 
            "prise_eur": 5 
           } 
          }] 
         } 
        }] 
       } 
      } 
     } 
    } 
} 

注意をそのshould句はORのような役割を果たし:shouldにおける副次句のうちの少なくとも一方が一致する場合はtrueでなければならない

+0

ありがとうそれは素晴らしいことだ – Serge

+0

私は、あなたがしたい場合は最初の 'should'は' must'されるべきだと思います! Aを達成するOR間のND – Jose

関連する問題