2016-06-01 72 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" }} 
     ] 
    } 
    } 
} 

也許對於進一步查詢的重要注意事項:如果您計劃在搜索和包含所有3個值(而不是2個或只有1標籤)你一定要首先查看Elasticsearch約nested objects對象。

1

試試這個

GET /_search 

    { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "terms": 
       { 
        "tags": ["OS", "opera","mobile"] 
       } 
      } 
      ] 
     } 
     } 
    } 
相關問題