2016-06-28 3 views
1

Мы находимся в процессе обновления ElasticSearch и NEST из 1.6.2 -> 2.3.3.Что заменяет TermsExecution.And в NEST 2.3.3 (обновление от NEST 1.6.2)

Что заменяет, как мы делаем TermsExecution.And в 2.3.3?

Как это легко сделать с неизвестным количеством терминов, которые должны соответствовать? например прежде чем вы смогли просто пройти в массив.

ответ

2

TermsExecution.And на terms запросе должен быть преобразован в bool запроса с конъюнкцией must (или filter, в зависимости от запроса контекста/фильтра) запросов, причем каждый запрос будучи term запроса по индивидуальному значению.

Например,

client.Search<dynamic>(s => s 
    .Query(q => +q 
     .Term("field", "value1") 
     && +q 
     .Term("field", "value2") 
    ) 
); 

дает

{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "term": { 
      "field": { 
       "value": "value1" 
      } 
      } 
     }, 
     { 
      "term": { 
      "field": { 
       "value": "value2" 
      } 
      } 
     } 
     ] 
    } 
    } 
}