如何在es中查询null值

文章目录

1、背景

在我们向es中写入数据时,有些时候数据写入到es中的是null,或者没有写入这个字段,那么这个时候在es中该如何查询出这种为null的数据呢?

2、需求

假设我们的mapping存在 如下2个字段name和address,其中 name是keyword类型且使用了null_value来处理null值,address字段是text类型。

我们插入数据时,存在name和address字段都不存在的,存在name和address是[]或null的数据,我们需要查询出来这些数据。

3、准备数据

3.1 创建mapping

复制代码
PUT /index_null_value
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword",
        "null_value": "--"
      },
      "address":{
        "type": "text"
      },
      "age":{
        "type": "integer",
        "null_value": "-1"
      }
    }
  }
}

注意:

  1. null_value 需要和字段的 类型值 保持一致,比如上方的age是integer类型,那么null_value的值就必须是integer类型。
  2. null_value 不会修改 _source中的值
  3. []空数组是不会被null_value替换的,因为[]中不包含明确的null
  4. null_value可以修饰的数据类型有限,比如text类型不可使用。

3.2 插入数据

复制代码
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}
  1. 数据中存在 name和 address字段都不存在的
  2. 数据中存在 name和 address字段 是 \[\] 的
  3. 数据中存在 name和 address字段 是 null 的
  4. 数据中存在 name和 address字段 都有值的

4、查询 name字段为null的数据

5、查询address不存在或值直接为null的数据


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

相关推荐
金銀銅鐵4 分钟前
[Java] 用纯 Swing 做一个《論語·學而》阅读器
java·ai编程·交互设计
艾伦_耶格宇1 小时前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
2301_780789661 小时前
深度伪造即服务:新型网络诈骗的“完美面具”与识别之道
java·网络·ddos
LHICOD1 小时前
Linux-2
java·linux·后端·jar·vmware·svm·vm
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(03)
java·数据库·mysql·面试·八股·大厂实习
呆呆敲代码的小Y2 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
水无痕simon2 小时前
3、工程重构
java·spring cloud·重构
阿里云基础软件2 小时前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 项目:需求分析与滑动数据设计
java·开发语言·交友
前端 贾公子3 小时前
第 5 章:Codex 从可运行程序到可交付工具
java·前端·数据库