2015-11-02 4 views
0

Для запроса Bool, я мог бы получить результаты со следующим:Elasticsearch запрос с несколькими точного avlues

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

Как я могу передать это список EMPLOYEE_ID как этот "employee_id" : [123, 234, 345] для { "match": { "city": "LA" }. ? В основном я хочу, чтобы получить документы для employee_id 123, 234, 345 которого city = 'LA'

ответ

1

Вы можете использовать term фильтр, чтобы найти единичные термины с точным соответствием, а terms найти документы, совпадающие по крайней мере п списка терминов.

Если вам не нужен рейтинг документа (который вы не делаете при выполнении точных совпадений, так как все документы будут одинаковыми), используйте filtered queries для повышения эффективности запросов.

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "city": "LA" 
       } 
      }, 
      { 
       "terms": { 
       "employee_id": [ 123, 456, 789 ] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
Смежные вопросы