Null value
The null_value mapping parameter allows you to replace explicit null values with a predefined substitute during indexing. By default, if a field is set to null, it is not indexed and cannot be searched. With null_value defined, the specified replacement value is indexed instead. This allows you to query or aggregate documents in which a field was originally null without modifying the document _source.
The null_value must be of the same type as the field it is applied to. For instance, a date field cannot use a boolean such as true as its null_value; the null_value must be a valid date string.
Setting a null_value on a field
The following request creates an index named products. The category field is of type keyword and replaces null values with "unknown" during indexing:
PUT /products
{
"mappings": {
"properties": {
"category": {
"type": "keyword",
"null_value": "unknown"
}
}
}
}
Indexing a document with a null value
Use the following command to index a document in which the category field is set to null:
PUT /products/_doc/1
{
"category": null
}
Querying the null substitute
Use the following command to search for documents in which the category field was previously null:
POST /products/_search
{
"query": {
"term": {
"category": "unknown"
}
}
}
The response contains the matching document:
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.2876821,
"hits": [
{
"_index": "products",
"_id": "1",
"_score": 0.2876821,
"_source": {
"category": null
}
}
]
}
}
Aggregating on a null substitute
Because the null replacement is indexed, it also appears in aggregations. Use the following command to perform a terms aggregation on the category field:
POST /products/_search
{
"size": 0,
"aggs": {
"category_count": {
"terms": {
"field": "category"
}
}
}
}
The response contains aggregated results:
{
...
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"category_count": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "unknown",
"doc_count": 1
}
]
}
}
}