2016-10-09 7 views
0

に完全一致クエリ:弾性検索:この文書が与えられた文字列配列

{"name": "Perfect Sunny-Side Up Eggs","ingredientList": ["canola oil","eggs"]} 

がどのように私は、正確な返す文字列の配列を指定して、クエリ用語「油の卵」に一致するために弾性検索でクエリを構築することができ、これまでのところこれは私が持っているもの、それが、それは他の無関係な文書を返します。例えば

POST /recipes/recipe/_search 
{ 
    "query": { 
     "match": { 
     "ingredientList": { 
      "query": [ 
       "oil", 
       "eggs" 
      ], 
      "operator": "and" 
     } 
     } 
    } 
} 

、この文書が返されますが、それは「油」が含まれていません。

{"name": "Quick Baked French Toast","ingredientList": ["butter","cinnamon raisin bread","eggs"]} 
+0

あなたは 'bool'が必要になります。

{ "query": { "bool": { "must": [ { "term": { "ingredientList": "oil" } }, { "term": { "ingredientList": "eggs" } } ] } } } 

は私に結果をもたらす結果は "油" と "卵" 含まれている必要があります複数の「必須」句を含むクエリ:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html –

答えて

1

あなたのクエリは次のようになります:

{ 
    "took" : 1, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "ingredients", 
     "_type" : "recipe", 
     "_id" : "AVeprXFrNutW6yNguPqp", 
     "_score" : 1.0, 
     "_source" : { 
     "name" : "Perfect Sunny-Side Up Eggs", 
     "ingredientList" : [ "canola oil", "eggs" ] 
     } 
    } ] 
    } 
} 
+0

ありがとうございました! –

関連する問題