在es中查詢null值的操作方法
1、背景
在我們向es中寫入數(shù)據(jù)時,有些時候數(shù)據(jù)寫入到es中的是null,或者沒有寫入這個字段,那么這個時候在es中該如何查詢出這種為null的數(shù)據(jù)呢?
2、需求
假設(shè)我們的mapping存在 如下2個字段name和address,其中 name是keyword類型且使用了null_value來處理null值,address字段是text類型。
我們插入數(shù)據(jù)時,存在name和address字段都不存在的,存在name和address是[]或null的數(shù)據(jù),我們需要查詢出來這些數(shù)據(jù)。
3、準(zhǔn)備數(shù)據(jù)
3.1 創(chuàng)建mapping
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中的值[]空數(shù)組是不會被null_value替換的,因為[]中不包含明確的nullnull_value可以修飾的數(shù)據(jù)類型有限,比如text類型不可使用。

3.2 插入數(shù)據(jù)
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}- 數(shù)據(jù)中存在
name和address字段都不存在的 - 數(shù)據(jù)中存在
name和address字段 是 [] 的 - 數(shù)據(jù)中存在
name和address字段 是 [null] 的 - 數(shù)據(jù)中存在
name和address字段 都有值的
4、查詢 name字段為null的數(shù)據(jù)

5、查詢address不存在或值直接為null的數(shù)據(jù)


6、參考鏈接
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
到此這篇關(guān)于如何在es中查詢null值的文章就介紹到這了,更多相關(guān)es中查詢null值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring源碼解析之循環(huán)依賴的實現(xiàn)流程
這篇文章主要介紹了Spring源碼解析之循環(huán)依賴的實現(xiàn)流程,文章基于Java的相關(guān)內(nèi)容展開循環(huán)依賴的實現(xiàn)流程,需要的小伙伴可以參考一下2022-07-07
Mybatis插件PageHelper的實現(xiàn)原理詳解
PageHelper 是一款開源的 MyBatis 分頁插件,可以在實際應(yīng)用中方便地實現(xiàn)分頁功能,這篇文章主要來和大家講講PageHelper的原理與使用,需要的可以參考下2023-06-06
Spring Boot 通過注解實現(xiàn)數(shù)據(jù)校驗的方法
這篇文章主要介紹了Spring Boot 通過注解實現(xiàn)數(shù)據(jù)校驗的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Java實現(xiàn)通過IP獲取IP歸屬地的方法(離線+在線)
我們都知道安全攻擊都是在某臺客戶機上執(zhí)行某些惡意操作致使服務(wù)端響應(yīng)異常崩潰亦或響應(yīng)數(shù)據(jù)被篡改,首先我想到的是對訪問的web端做一個IP的校驗,那么我們首先得知道客戶端的IP是多少,接下來此文重點介紹如何獲得,需要的朋友可以參考下2023-10-10
SpringBoot3.x版本與Mybatis-Plus不兼容問題
當(dāng)使用3.x版本的SpringBoot結(jié)合Mybatis-Plus時版本不兼容就會報錯,本文就來介紹一下這個問題的解決方法,感興趣的可以了解一下2024-03-03
Java的synchronized關(guān)鍵字深入解析
這篇文章主要介紹了Java的synchronized關(guān)鍵字深入解析,在并發(fā)編程中,多線程同時并發(fā)訪問的資源叫做臨界資源,當(dāng)多個線程同時訪問對象并要求操作相同資源時,分割了原子操作就有可能出現(xiàn)數(shù)據(jù)的不一致或數(shù)據(jù)不完整的情況,需要的朋友可以參考下2023-12-12
spring中@Autowire和@Resource的區(qū)別在哪里(推薦)
這篇文章主要介紹了spring中@Autowire和@Resource的區(qū)別在哪里?本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02

