2015-11-02 75 views
0

對於布爾查詢,我能得到的結果與以下內容:Elasticsearch查詢與多個確切avlues

POST _search 
{ 
"query": { 
    "bool": { 
     "must": [ 
     { "match": { "city": "LA" }}, 
     { "match": { "employee_id" : 123}} 
    ] 
    } 
    } 
} 

如何傳遞EMPLOYEE_ID的的它的列表這樣"employee_id" : [123, 234, 345]{ "match": { "city": "LA" }。 ?基本上我想檢索僱員標識123, 234, 345city = 'LA'

回答

1

可以使用term過濾器來查找一個精確匹配項,並terms文件來查找文檔,其比賽至少n項的列表

如果您不需要文檔排名(在進行精確詞條匹配時您不需要,因爲這些文檔的得分都相同),請使用filtered queries來提高查詢性能。

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "city": "LA" 
       } 
      }, 
      { 
       "terms": { 
       "employee_id": [ 123, 456, 789 ] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
}