New

The executive guide to generative AI

Read more
IMPORTANT: This documentation is no longer updated. Refer to Elastic's version policy and the latest documentation.

Missing Filter

edit

Returns documents that have only null values or no value in the original field:

{
    "constant_score" : {
        "filter" : {
            "missing" : { "field" : "user" }
        }
    }
}

For instance, the following docs would match the above filter:

{ "user": null }
{ "user": [] } 
{ "user": [null] } 
{ "foo":  "bar" } 

This field has no values.

This field has no non-null values.

The user field is missing completely.

These documents would not match the above filter:

{ "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.

This field has one non-null value.

null_value mapping

edit

If the field mapping includes a null_value (see Core Types) then explicit null values are replaced with the specified null_value. For instance, if the user field were mapped as follows:

  "user": {
    "type": "string",
    "null_value": "_null_"
  }

then explicit null values would be indexed as the string _null_, and the the following docs would not match the missing filter:

{ "user": null }
{ "user": [null] }

However, these docs—​without explicit null values—​would still have no values in the user field and thus would match the missing filter:

{ "user": [] }
{ "foo": "bar" }

existence and null_value parameters

edit

When the field being queried has a null_value mapping, then the behaviour of the missing filter can be altered with the existence and null_value parameters:

{
    "constant_score" : {
        "filter" : {
            "missing" : {
                "field" : "user",
                "existence" : true,
                "null_value" : false
            }
        }
    }
}
existence

When the existence parameter is set to true (the default), the missing filter will include documents where the field has no values, ie:

{ "user": [] }
{ "foo": "bar" }

When set to false, these documents will not be included.

null_value

When the null_value parameter is set to true, the missing filter will include documents where the field contains a null value, ie:

{ "user": null }
{ "user": [null] }
{ "user": ["jane",null] } 

Matches because the field contains a null value, even though it also contains a non-null value.

When set to false (the default), these documents will not be included.

Either existence or null_value or both must be set to true.

Caching

edit

The result of the filter is always cached.

Was this helpful?
Feedback