广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解如何在Elasticsearch中搜索空值
  • 258
分享到

详解如何在Elasticsearch中搜索空值

Elasticsearch搜索空值Elasticsearch 空值 2023-01-28 06:01:51 258人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录引言选项 1:null_value 映射参数选项2:使用 MUST_NOT 查询引言 根据 elasticsearch 文档,无法索引或搜索空值 null。 当一个字段设置为

引言

根据 elasticsearch 文档,无法索引或搜索空值 null。 当一个字段设置为 null(或空数组或空值数组)时,它被视为该字段没有值。

那么如何找到 product_name 为空(null)的文件呢?

选项 1:null_value 映射参数

你可以在配置索引映射时定义 null_value 参数。 它将允许你在索引文档时用指定值替换显式空值 null,以便它可以被索引和搜索。

让我们创建索引名称 products,其中包含值为 NULL 的 product_name 字段。

 PUT products
 {
   "mappings": {
     "properties": {
       "product_name":{
         "type": "keyWord",
         "null_value": "NULL"
       }
     }
    }
  }

让我们用 product_name 字段索引一些文档,该字段的值为 null 或空数组。

 POST products/_doc/1
 {
   "product_name": null,
   "company":"apple"
 }
 POST products/_doc/2
 {
   "product_name": [],
   "company":"apple"
  }

让我们查询并检查我们得到的结果:

  POST products/_search
  {
    "query": {
      "match": {
        "product_name": "NULL"
      }
    }
  }

上面的搜索结果为:

`
 {
   "took": 1009,
   "timed_out": false,
   "_shards": {
     "total": 1,
     "successful": 1,
     "skipped": 0,
     "failed": 0
   },
    "hits": {
      "total": {
        "value": 1,
        "relation": "eq"
      },
      "max_score": 0.2876821,
      "hits": [
        {
          "_index": "products",
          "_id": "1",
          "_score": 0.2876821,
          "_source": {
            "product_name": null,
            "company": "apple"
          }
        }
      ]
    }
  }
`![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)

什么??? 为什么 Elasticsearch 只返回一个文档而不返回第二个具有空数组的文档? 因为,

  • 一个空数组不包含明确的 null,因此不会被 null_value 替换。

此外,product_name 值仅作为 null 而不是作为在索引映射中设置的 NULL。 因为,

  • null_value 只影响数据的索引方式,它不会修改 _source 文档。

现在,当 product_name 为 null 或空数组时,如何将两个文档都放入结果中?

选项2:使用 MUST_NOT 查询

让我们定义没有 null_value 的索引映射和与上面相同的索引文档。

 PUT products
 {
   "mappings": {
     "properties": {
       "product_name":{
         "type": "keyword"
       }
     }
   }
  }

现在你可以使用以下查询:

  POST products/_search
  {
    "query": {
      "bool": {
        "must_not": [
          {
            "exists": {
              "field": "product_name"
            }
          }
        ]
      }
    }
  }

上述查询的结果,它现在返回两个结果:

`
 {
   "took": 1,
   "timed_out": false,
   "_shards": {
     "total": 1,
     "successful": 1,
     "skipped": 0,
     "failed": 0
   },
    "hits": {
      "total": {
        "value": 2,
        "relation": "eq"
      },
      "max_score": 0,
      "hits": [
        {
          "_index": "products",
          "_id": "1",
          "_score": 0,
          "_source": {
            "product_name": null,
            "company": "apple"
          }
        },
        {
          "_index": "products",
          "_id": "2",
          "_score": 0,
          "_source": {
            "product_name": [],
            "company": "apple"
          }
        }
      ]
    }
  }
`![](Https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)

将 must_not 与 exists 查询一起使用的优点:

  • 此选项 2 不依赖于字段的数据类型,无论字段的数据类型如何,它都会起作用,但选项 1 null_value 需要与字段的数据类型相同。 例如,长字段不能有字符串 null_value。
  • 选项 1 不适用于文本类型的字段,因为 Elasticsearch 不允许为文本类型的字段设置 null_value 参数。
  • 选项 2 也是单一且高效的解决方案,因为 1) 它不需要根据字段映射中定义的值添加 null 值的开销。2)索引大小也会变小,导致索引变少,搜索查询变快。

以上就是详解如何在Elasticsearch中搜索空值的详细内容,更多关于Elasticsearch搜索空值的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解如何在Elasticsearch中搜索空值

本文链接: https://www.lsjlt.com/news/178385.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解如何在Elasticsearch中搜索空值
    目录引言选项 1:null_value 映射参数选项2:使用 MUST_NOT 查询引言 根据 Elasticsearch 文档,无法索引或搜索空值 null。 当一个字段设置为 ...
    99+
    2023-01-28
    Elasticsearch搜索空值 Elasticsearch 空值
  • 如何在PHP中使用ElasticSearch实现搜索
    这篇“如何在PHP中使用ElasticSearch实现搜索”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何在PHP中使用E...
    99+
    2023-06-05
  • 详解Elasticsearch如何把一个索引变为只读
    目录正文设置为只读正文 将索引设置为只读可能听起来很奇怪,但在 Elasticsearch 中执行此类操作是可能的。想象一下这样一种情况,你特别需要限制对索引的写入操作,无论是维护...
    99+
    2023-02-06
    Elasticsearch索引变只读 Elasticsearch 索引
  • Android中如何实现清空搜索框的文字
    需求:项目中的有关搜索的地方,加上清空文字的功能,目的是为了增加用户体验,使用户删除文本更加快捷 解决过程:开始的时候感觉这个东西不太好实现,主要就是布局的问题,可能是开始顾虑...
    99+
    2022-06-06
    Android
  • 数据库中如何搜索时空行为数据
    这篇文章主要讲解了“数据库中如何搜索时空行为数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库中如何搜索时空行为数据”吧!数据结构时空行为数据包含三个...
    99+
    2022-10-19
  • Moshi如何解决Gson在kotlin中默认值空问题
    本文小编为大家详细介绍“Moshi如何解决Gson在kotlin中默认值空问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Moshi如何解决Gson在kotlin中默认值空问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-07-05
  • 如何在Java中操作二叉搜索树
    如何在Java中操作二叉搜索树?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、二叉搜索树插入元素     class&n...
    99+
    2023-06-15
  • Java对象如何在HTTP索引中实现高效搜索?
    HTTP索引是一种非常常见的搜索方式,它通过HTTP协议进行通信,将索引数据存储在服务器上,从而可以快速地查询相关信息。但是,如果要实现高效搜索,就需要对Java对象进行一些优化。 一、Java对象的序列化 首先,Java对象需要进行序列...
    99+
    2023-09-13
    对象 http 索引
  • 如何在PHP中进行智能图片搜索和检索?
    随着互联网的高速发展,图片已经成为网络世界中最具有表现力和感染力的媒介形式之一。然而,大量的图片信息需要我们进行高效的检索和分类,这对于网站管理者和用户来说都是非常重要的。在PHP中,我们可以通过使用一些较新的技术和工具来实现智能图片搜索和...
    99+
    2023-05-20
    PHP 图片搜索 智能检索
  • 详解如何在Golang中修改变量的值
    Golang是当今最为流行的编程语言之一,它具有简单易用、高效、安全等优点,使得它在应用开发领域里得到越来越广泛的应用。在程序开发过程中,我们经常需要改变变量的值,本文将介绍如何在Golang中改变变量的值以及相关的语法细节。一、变量的声明...
    99+
    2023-05-14
  • 如何在MySQL表中按日期搜索记录?
    假设我们有一个表“Order123”,其中包含 ProductName、Quantity 和 OrderDate 列,如下 -mysql> Select * from Order123; +-------------+---...
    99+
    2023-10-22
  • 如何在MySQL中提高全文搜索效率
    本篇内容主要讲解“如何在MySQL中提高全文搜索效率”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何在MySQL中提高全文搜索效率”吧!  很多互联网应用程序...
    99+
    2022-10-18
  • 在Oracle表中如何进行关键词搜索
    这篇“在Oracle表中如何进行关键词搜索”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在Oracle表中如何进行关键词搜索...
    99+
    2023-07-02
  • 在Java中如何处理数组中的空值?
    在Java中,数组是一种常见的数据类型,它可以存储一组相同类型的数据。但是,在实际开发中,我们经常会遇到数组中存在空值的情况。这时,我们需要对数组中的空值进行处理,以确保程序的正确性和稳定性。 本文将介绍在Java中如何处理数组中的空值,包...
    99+
    2023-09-30
    数组 bash windows
  • python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
    前言 在许多的情况下,很多要匹配内容是一起出现,或者一起不出现的。比如《》,< >,这样的括号,不存在使用半个的情况。因此,在正则表达式里也有一致性的判断,要么两个尖括号一起出现,要么一个也不要...
    99+
    2022-06-04
    前向 如何使用 详解
  • Ubuntu 14.04中如何禁用Dash在线搜索结果
    这篇文章主要为大家展示了“Ubuntu 14.04中如何禁用Dash在线搜索结果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ubuntu 14.04中如何禁用Dash在线搜索结果”这篇文章吧。...
    99+
    2023-06-13
  • 如何在MySQL中获得更好的搜索结果
    这篇文章主要为大家展示了“如何在MySQL中获得更好的搜索结果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何在MySQL中获得更好的搜索结果”这篇文章吧。 ...
    99+
    2022-10-19
  • 如何在本地搜索中优化我的业务
    在本地搜索中优化你的业务是提升曝光度和吸引潜在客户的有效途径。一、谷歌我的商家(Google My Business)优化;二、本地关键词策略;三、收集和管理在线评价;四、本地链接建设;五、社交媒体活跃度。本文将为你提供全面和具体的策略,包...
    99+
    2023-10-29
    业务 如何在
  • 如何在Java中使用Linux分布式索引进行高效搜索?
    在当今信息爆炸的时代,如何高效地搜索大量数据成为了一个非常重要的课题。而分布式索引是一种常用的解决方案,它可以将数据分散到多个节点上进行处理,提高搜索效率。本文将介绍如何在Java中使用Linux分布式索引进行高效搜索。 一、什么是分布式索...
    99+
    2023-08-24
    分布式 索引 linux
  • 如何在ASP中使用关键字索引来提高搜索精度?
    在ASP(Active Server Pages)开发中,搜索功能是一个非常重要的功能。而在搜索功能中,关键字索引是提高搜索精度的重要手段。本文将介绍如何在ASP中使用关键字索引来提高搜索精度。 1.什么是关键字索引? 关键字索引是指将文...
    99+
    2023-09-26
    并发 关键字 索引
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作