Запрос с несколькими значениями свойства с одним значением в Elasticsearch

Я пытаюсь немного развить этот запрос. Индекс, который я ищу, также имеет поле «сущность» с идентификатором. Таким образом, несколько записей будут иметь «сущность»: 16, «сущность» 156 и т. д., в зависимости от идентификатора сущности. Мне нужно расширить этот запрос таким образом, чтобы я мог передать массив или некоторый список значений, например {:term => {:entity => [1, 16, 100]}}, и получить записи, которые имеют одно из этих целых чисел в качестве значения их сущности. Мне пока не повезло, может кто-нибудь мне помочь?

{ 
  "query" : {

    "bool" : {
      "must" : [
        {
          "term" : {"user_type" : "alpha"}
        }, 
        { 
          "term" :{"area" : "16"}
        }
      ], 
      "must_not" : [], 
      "should" :   []
    }
  }, 
  "filter": {
    "or" : [{
       "and" : [
          { "term" : { "area" : "16" } },
          { "term" : { "date" : "05072013" } }
       ]
    }, {
       "and" : [
          { "term" : { "area" : "16" } },
          { "term" : { "date" : "blank" } }
       ]
    }


    ]
  },
"from" : 0,
"size" : 100 
}

person Aristata    schedule 27.04.2013    source источник


Ответы (1)


Используйте "terms" вместо "term".

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-filter.html https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html

{ "terms" : { "entity" : [ 123, 1234, ... ] }}

person mbj    schedule 27.04.2013
comment
Большое спасибо! Вы спасли мой день :) - person NorthCat; 14.12.2015
comment
этот запрос будет контактировать с AND или с OR ? я хочу проверить свое состояние с помощью ИЛИ, например: в приведенном выше запросе entity = 123 OR entity = 1234 и т. д. как написать этот запрос? - person David Coder; 31.03.2016
comment
@DeepParekh Удалось ли вам написать запрос для комментария выше? И или ИЛИ? У меня есть что-то вроде этого. (Мне нужно передать несколько значений расширения для фильтрации. Можете ли вы помочь мне решить эту проблему) Прямо сейчас я могу отправить только одно значение расширения. Что делать, если мне нужно передать несколько значений расширения для запроса фильтра? .Filter(ft => ft.Term(t => t.Field("content_type").Value(extension))))) - person ASN; 20.06.2016