2017-05-15 20 views
0

MUST-MAT​​CHとMULTI-MATCHを組み合わせようとしていますが、動作させることができませんでした。基本的に私は、これらのMUST条件をしたい:ElasticSearchはマルチマッチと一致する必要があります

"must": [{ "match": { "city": $city } }, 
      { "match": { "is_displayed": 1 } }, 
      { "match": { "status": "active" } }] 

と私はこれらの試合をしたい:$クエリは、テキストボックスの値の$ selectedTypeある

  "multi_match": { 
       "query": $query, 
       "type": $selectedType, 
       "fields": fieldArray, 
      } 

は、マルチマッチクエリの種類の一つであり、fieldArrayフィールドです検索する。たとえば、テキストボックスの値が "hello world"で、fieldArrayが['title'、 'cuisine']の場合、 "hello"および/または "world"のいずれかが指定されたフィールドのいずれかまたはすべてと一致する必要があります。どんな洞察とアドバイスも感謝しています。

答えて

0

mustブロックに別の句を追加すると、ブロックが必要になると思います。

{ 
"query": { 
    "bool": { 
    "must": [ 
     { 
      "match": { 
       "city": "$city" 
      } 
     }, 
     { 
      "match": { 
       "is_displayed": 1 
      } 
     }, 
     { 
      "match": { 
       "status": "active" 
      } 
     }, 

     "query_string": { 
      "fields": fieldArray, 
      "query": "*$query*" 
     } 
     } 
     ] 
    } 
    } 
    } 
+0

私はそれを試みましたが、phrase_prefixだけが結果を返しました。他の複数一致クエリタイプは空の結果セットを返しました。 –

+0

'phrase_prefix'クエリはどこにありますか? – Richa

+0

$ selectedType変数にあります。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html –

関連する問題