首页 > 其他分享 >如何在es中查询null值

如何在es中查询null值

时间:2023-01-29 21:31:07浏览次数:60  
标签:index name age value 查询 address null es

1、背景

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

2、需求

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

我们插入数据时,存在nameaddress字段都不存在的,存在nameaddress[]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 需要和字段的 类型值 保持一致,比如上方的ageinteger类型,那么null_value的值就必须是integer类型
  2. null_value 不会修改 _source中的值
  3. []空数组是不会被null_value替换的,因为[]中不包含明确的null
  4. null_value可以修饰的数据类型有限,比如text类型不可使用。 null_value注意事项

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. 数据中存在 nameaddress字段都不存在的
  2. 数据中存在 nameaddress字段 是 [] 的
  3. 数据中存在 nameaddress字段 是 [null] 的
  4. 数据中存在 nameaddress字段 都有值的

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

查询name字段为null的数据

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

查询address不存在或值直接为null的数据 boolean exists

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

标签:index,name,age,value,查询,address,null,es
From: https://blog.51cto.com/u_10535186/6025989

相关文章

  • Spring Boot读取resources目录下的文本文件
    Java8SpringBoot2.7.3IntelliJIDEA2022.3.2(CommunityEdition)-- 开门见山使用 ClassLoader的getResourceAsStream读取。注,还可以使用其下的静态方......
  • 如何在es中查询null值
    目录1、背景2、需求3、准备数据3.1创建mapping3.2插入数据4、查询name字段为null的数据5、查询address不存在或值直接为null的数据6、参考链接1、背景在我们向es中写......
  • Redis批量查询
    Redis批量处理在开发中,有时需要对Redis进行大批量的处理。比如Redis批量查询多个Hash。如果是在for循环中逐个查询,那性能会很差。这时,可以使用Pipeline(管道)。Pip......
  • 神马权重是什么?神马权重怎么在线查询?
    神马搜索是阿里旗下基于UC浏览器的搜索引擎,依托阿里大数据,专注移动互联网,打通淘宝、优酷等多维全场景数据端,智能化满足用户搜索需求。而UC是移动端浏览器产品中月活人数排名......
  • 庄懂TA lesson3
    半兰伯特Shader"Shader/lanbert"{Properties{}SubShader{Tags{"RenderType"="Opaque"}Pass{......
  • Table类:后台自定义条件筛选查询
    1、首先需要在控制器中定义开启变量,例如控制器:dayrui/App/Demo/Controllers/Admin/Home.php//数据表初始化protectedfunction_init($data){$this->......
  • C++ : 引发了异常: 写入访问权限冲突。 this 是 nullptr。
    在写代码的时候遇到了一个问题引发了异常:写入访问权限冲突。this是nullptr。程序抛异常。前情提要:MFC程序,我自己写了一个类MyVolt,里面有一个成员函数CollectVolt......
  • [Typescript] Understanding Generics at Different Levels of Functions
    Thefollowingcodeimport{expect,it}from'vitest';import{Equal,Expect}from'../helpers/type-utils';exportinterfaceCache<T>{get:(key:string......
  • Find MAC Address 2.0.0.33 汉化版
    小软件,方便用于找出局域网中电脑的MAC地址界面:下载地址:​​http://vbcoder.qupan.com/2534850.html​​特别信息:tanaya0000TE-FAU1TQ-ANRKRP-Q6934H-U2VHYN-BXEJN6    ......
  • FreeFileSync v5.2
    这玩意更新太快,连5.1都过去了,貌似更新一把,但需要的右键文件复制功能却没有...下载:​​http://nchc.dl.sourceforge.net/project/freefilesync/freefilesync/v5.2/FreeFileSy......