Запрос Exists
Возвращает документы, содержащие индексированное значение для поля.
Индексированное значение может отсутствовать для поля документа по различным причинам:
- Поле в исходном JSON является
nullили[] - Поле имеет
"index" : falseи"doc_values" : false, заданные в схеме - Длина значения поля превысила значение
ignore_above, заданное в схеме - Значение поля было некорректным и
ignore_malformedбыло определено в схеме
Пример запроса
resp = client.search(
query={
"exists": {
"field": "user"
}
},
)
print(resp) response = client.search(
body: {
query: {
exists: {
field: 'user'
}
}
}
)
puts response res, err := es.Search(
es.Search.WithBody(strings.NewReader(`{
"query": {
"exists": {
"field": "user"
}
}
}`)),
es.Search.WithPretty(),
)
fmt.Println(res, err) const response = await client.search({
query: {
exists: {
field: "user",
},
},
});
console.log(response); GET /_search
{
"query": {
"exists": {
"field": "user"
}
}
} Параметры верхнего уровня для exists
-
field -
(Обязательно, строка) Имя поля, которое вы хотите искать.
Хотя поле считается несуществующим, если значение JSON равно
nullили[], эти значения укажут, что поле существует:- Пустые строки, такие как
""или"-" - Массивы, содержащие
nullи другое значение, например[null, "foo"] - Специальное значение
null-value, определённое в схеме поля
- Пустые строки, такие как
Примечания
Поиск документов, отсутствующих в индексе
Чтобы найти документы, у которых отсутствует индексированное значение для поля, используйте оператор must_not булевых запросов с запросом exists.
Следующий запрос возвращает документы, у которых отсутствует индексированное значение для поля user.id.
resp = client.search(
query={
"bool": {
"must_not": {
"exists": {
"field": "user.id"
}
}
}
},
)
print(resp) response = client.search(
body: {
query: {
bool: {
must_not: {
exists: {
field: 'user.id'
}
}
}
}
}
)
puts response const response = await client.search({
query: {
bool: {
must_not: {
exists: {
field: "user.id",
},
},
},
},
});
console.log(response); GET /_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "user.id"
}
}
}
}
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-exists-query.html