2016-06-01 4 views
1

私はリストとして値を持つフィールドを持っています。たとえば、弾性検索のリストフィールドに対する照合

_id = 1 
tags = ["IT", "mobile", "OS"] 

_id = 2 
tags = ["Mac", "fast", "laptop"] 

_id = 3 
tags = ["IT", "android", "OS"] 

タグフィールドと照合するリストがあります。

sample = ["OS", "opera", "mobile"] 

私はサンプルセットを使用して、タグを照会するときid 1id 3とドキュメントが一致している必要がありそう。(id 1"OS""mobile"id 3 conatins "OS"が含まれています原因。)

私は弾性検索でこれを行うことができますどのように?

+0

あなたは成功し、それを解決しましたお試しください!または必要なヘルプ? – sunkuet02

答えて

0

"should" keywordの下のブール検索を試してください。たぶん

GET /_search 
{ 
    "query": { 
    "bool": { 
     "should": [ 
     { "match": { "tags": "OS" }}, 
     { "match": { "tags": "opera" }}, 
     { "match": { "tags": "mobile" }} 
     ] 
    } 
    } 
} 

さらにクエリの重要な注意:あなたが検索およびALL 3つの値(ただし、2またはちょうど1タグ)を含むオブジェクトを予定している場合、あなたは間違いなく最初Elasticsearch約nested objectsをお読みください。

1

この

GET /_search 

    { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "terms": 
       { 
        "tags": ["OS", "opera","mobile"] 
       } 
      } 
      ] 
     } 
     } 
    }