Запросы на уровне термина в Elasticsearch: exists запрос

Возвращает документы, содержащие индексированное значение для поля.

Индексированное значение может не существовать для поля документа по ряду причин:

  • Поле в исходном JSON равно null или []
  • Поле имеет "index" : false установленное в сопоставлении (mapping)
  • Длина значения поля превышает параметр ignore_above в сопоставлении (mapping)
  • Значение поля было искажено, и в сопоставлении (mapping) было определено ignore_malformed

GET /_search
{
  "query": {
    "exists": {
      "field": "user"
    }
  }
}

Параметры верхнего уровня для exists

field

(Обязательный, строка) Имя поля, в котором вы хотите выполнить поиск.

Хотя поле считается несуществующим, если значение JSON равно null или [], эти значения будут указывать на то, что поле действительно существует:

  • Пустые строки, такие как "" или "-"
  • Массивы, содержащие null и другое значение, например [null, "foo"]
  • Пользовательское нулевое значение, определенное в сопоставлении полей (field mapping)

Найти документы, в которых отсутствуют проиндексированные значения

Чтобы найти документы, в которых отсутствует проиндексированное значение для поля, используйте логический запрос must_not с существующим запросом.

Следующий поиск возвращает документы, в которых отсутствует индексированное значение для поля user.id.

GET /_search
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "user.id"
        }
      }
    }
  }
}


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Нормальные формы, пример нормализации в базе данных

Хэш-таблица: разрешение коллизий