作者:黄董一叶知秋_821 | 来源:互联网 | 2024-09-27 19:16
ExistsQueryeditExistsQueryeditExistsQueryeditExistsQueryeditReturnsdocumentsthathaveatleas
Returns documents that have at least one non-null
value in the original field:
GET /_search
{
"query": {
"exists" : { "field" : "user" }
}
}
For instance, these documents would all match the above query:
{ "user": "jane" }
{ "user": "" }
{ "user": "-" }
{ "user": ["jane"] }
{ "user": ["jane", null ] }
|
An empty string is a non-null value.
|
|
Even though the standard analyzer would emit zero tokens, the original field is non-null .
|
|
At least one non-null value is required.
|
These documents would not match the above query:
{ "user": null }
{ "user": [] }
{ "user": [null] }
{ "foo": "bar" }
|
This field has no values.
|
|
At least one non-null value is required.
|
|
The user field is missing completely.
|
null_value
mappingedit
If the field mapping includes the null_value
setting then explicit null
values are replaced with the specified null_value
. For instance, if the user
field were mapped as follows:
PUT /example
{
"mappings": {
"doc": {
"properties": {
"user": {
"type": "keyword",
"null_value": "_null_"
}
}
}
}
}
then explicit null
values would be indexed as the string _null_
, and the following docs would match the exists
filter:
{ "user": null }
{ "user": [null] }
However, these docs—without explicit null
values—would still have no values in the user
field and thus would not match the exists
filter:
{ "user": [] }
{ "foo": "bar" }
There isn’t a missing
query. Instead use the exists
query inside a must_not
clause as follows:
GET /_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "user"
}
}
}
}
}
elasticsearch--- Exists Query