null 值不能被索引或者搜索.当一个字段被设置成 null(或者一个空数组,或者值全为 null 的数组)时, 该字段将被视为没有值。
null_value 参数允许你用一个特殊的值替换一个显示的 null 值, 以确保这个字段能被索引和搜索。例如:
curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"my_type": {
"properties": {
"status_code": {
"type": "keyword",
"null_value": "NULL" #1
}
}
}
}
}
'
curl -XPUT 'localhost:9200/my_index/my_type/1?pretty' -H 'Content-Type: application/json' -d'
{
"status_code": null
}
'
curl -XPUT 'localhost:9200/my_index/my_type/2?pretty' -H 'Content-Type: application/json' -d'
{
"status_code": [] #2
}
'
curl -XGET 'localhost:9200/my_index/_search?pretty' -H 'Content-Type: application/json' -d'
{
"query": {
"term": {
"status_code": "NULL" #3
}
}
}
'
| 1 | 用 NULL 代替显示的 null 值。 | | 2 | 没有显示的包含 null 的空数组,不会被 null_value 替换。 | | 3 | 搜索 NULL 将返回文档1,而不会返回文档2。 |
重点
null_value 必须设置成相同类型的参数。例如,一个 long 型的字段不能被设置成 string 类型的 null_value。