在我們向es
中寫入資料時,有些時候資料寫入到es
中的是null
,或者沒有寫入這個欄位,那麼這個時候在es
中該如何查詢出這種為null的資料呢?
假設我們的mapping
存在 如下2個欄位name
和address
,其中 name
是keyword
型別且使用了null_value
來處理null
值,address
欄位是text
型別。
我們插入資料時,存在name
和address
欄位都不存在的,存在name
和address
是[]
或null
的資料,我們需要查詢出來這些資料。
PUT /index_null_value
{
"mappings": {
"properties": {
"name":{
"type": "keyword",
"null_value": "--"
},
"address":{
"type": "text"
},
"age":{
"type": "integer",
"null_value": "-1"
}
}
}
}
注意:
null_value
需要和欄位的 型別值 保持一致,比如上方的age
是integer
型別,那麼null_value
的值就必須是integer型別
。null_value
不會修改 _source
中的值[]
空陣列是不會被null_value
替換的,因為[]
中不包含明確的null
null_value
可以修飾的資料型別有限,比如text
型別不可使用。PUT /index_null_value/_bulk
{"index":{"_id":0}}
{"age":10}
{"index":{"_id":1}}
{"name":null,"address": null,"age":10}
{"index":{"_id":2}}
{"name":[],"address":[],"age":20}
{"index":{"_id":3}}
{"name":[null],"address":[null],"age":60}
{"index":{"_id":4}}
{"name":[null,"123"],"address":[null,"123"],"age":70}
{"index":{"_id":5}}
{"name":["123",null],"address":["123",null],"age":80}
{"index":{"_id":6}}
{"name":["123","456"],"address":["123","456"],"age":90}
name
和 address
欄位都不存在的name
和 address
欄位 是 [] 的name
和 address
欄位 是 [null] 的name
和 address
欄位 都有值的name
欄位為null的資料address
不存在或值直接為null的資料
1、https://www.elastic.co/guide/en/elasticsearch/reference/8.6/null-value.html
2、https://www.elastic.co/guide/en/elasticsearch/reference/8.6/query-dsl-exists-query.html
本文來自部落格園,作者:huan1993,轉載請註明原文連結:https://www.cnblogs.com/huan1993/p/17073853.html