Запросы на уровне термина в 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"
}
}
}
}
}
Читайте также:
Комментарии
Отправить комментарий