OpenSearch/docs/reference/query-dsl/exists-query.asciidoc
markharwood a75964d8fd Docs change for exists query. (#43092)
Now emphasises the test is for indexed values.
Previous documentation only mentioned the state of the input JSON doc (null values) but this is only one of several reasons why an indexed value may not exist.

Closes #24256
2019-06-12 09:28:18 +01:00

67 lines
1.6 KiB
Plaintext

[[query-dsl-exists-query]]
=== Exists Query
Returns documents that contain an indexed value for a field.
An indexed value may not exist for a document's field due to a variety of reasons:
* The field in the source JSON is `null` or `[]`
* The field has `"index" : false` set in the mapping
* The length of the field value exceeded an `ignore_above` setting in the mapping
* The field value was malformed and `ignore_malformed` was defined in the mapping
[[exists-query-ex-request]]
==== Example request
[source,js]
----
GET /_search
{
"query": {
"exists": {
"field": "user"
}
}
}
----
// CONSOLE
[[exists-query-top-level-params]]
==== Top-level parameters for `exists`
`field`::
Name of the field you wish to search.
+
While a field is deemed non-existant if the JSON value is `null` or `[]`, these values will indicate the field does exist:
+
* Empty strings, such as `""` or `"-"`
* Arrays containing `null` and another value, such as `[null, "foo"]`
* A custom <<null-value, `null-value`>>, defined in field mapping
[[exists-query-notes]]
==== Notes
[[find-docs-null-values]]
===== Find documents missing indexed values
To find documents that are missing an indexed value for a field,
use the `must_not` <<query-dsl-bool-query, boolean query>> with the `exists`
query.
The following search returns documents that are missing an indexed value for
the `user` field.
[source,js]
----
GET /_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "user"
}
}
}
}
}
----
// CONSOLE