2016-09-09 3 views
0

は、これは私が与える「と」用語の条件にしたい私の検索フィルタクエリ、 です。フィルタ条件Elasticsearch AND条件

'query' => [ 
    "filtered" => [ 
     "query" => [ 
      "match_all" => [] 
     ], 
     "filter" => [ 
      "bool" => [ 
       "must" => [ 
        "terms" => [ 
         "num" => [ 
          1,2,3 
         ] 
        ], 
        "terms" => [ 
         "sample" => [ 
          "a", "b" 
         ], 
        ] 
       ] 
      ] 
     ], 
     'query' => [ 
      'multi_match' => [ 
       'query' => "Hello", 
       'fields' => ['text'], 
       'operator' => 'and' 
      ], 
     ] 
    ] 
], 

が、その動作していない内部 今、私は与えられている必要があります。これに対する他の解決策はありますか?追加「と」condtion、ちょうどブール値でその部分を追加し、必須にしたいとき

+0

検索クエリは何ですか?説明できますか ? – blackmamba

+0

select * from tableここでtext = "%Hello%"とnum(1,2,3)とsample in( "a"、 "b") – Ann

答えて

0

は、あなたがそうでなければ、あなたのbool/mustは連想配列となり、それはあなたが望むものではない、もう一つのアレイであなたのtermsフィルタを同封する必要があります(すなわち、termsフィルタのいずれかが廃棄されます)。

'query' => [ 
    "filtered" => [ 
     "query" => [ 
      "match_all" => [] 
     ], 
     "filter" => [ 
      "bool" => [ 
       "must" => [ 
        [      <--- 
         "terms" => [ 
         "num" => [ 
          1,2,3 
         ] 
         ] 
        ],     <--- 
        [      <--- 
         "terms" => [ 
         "sample" => [ 
          "a", "b" 
         ], 
         ] 
        ]      <--- 
       ] 
      ] 
     ], 
     'query' => [ 
      'multi_match' => [ 
       'query' => "Hello", 
       'fields' => ['text'], 
       'operator' => 'and' 
      ], 
     ] 
    ] 
], 
+0

ありがとうございます! – Ann

+0

それは助けて嬉しいよ! – Val

1

は、これを試してみてください。

{"query":{"bool":{"must":[{"terms":{"num":[1,2,3]}},{"terms":{"sample":["a","b"]}},{"match":{"text":"hello"}}]}},"from":0,"size":10} 
関連する問題