亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解如何在Elasticsearch中搜索空值

 更新時間:2023年01月26日 09:29:43   作者:Elasticsearch  
這篇文章主要為大家介紹了如何在Elasticsearch中搜索空值的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

根據(jù) Elasticsearch 文檔,無法索引或搜索空值 null。 當(dāng)一個字段設(shè)置為 null(或空數(shù)組或空值數(shù)組)時,它被視為該字段沒有值。

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

選項 1:null_value 映射參數(shù)

你可以在配置索引映射時定義 null_value 參數(shù)。 它將允許你在索引文檔時用指定值替換顯式空值 null,以便它可以被索引和搜索。

讓我們創(chuàng)建索引名稱 products,其中包含值為 NULL 的 product_name 字段。

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

讓我們用 product_name 字段索引一些文檔,該字段的值為 null 或空數(shù)組。

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

讓我們查詢并檢查我們得到的結(jié)果:

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

上面的搜索結(jié)果為:

`
 {
   "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 只返回一個文檔而不返回第二個具有空數(shù)組的文檔? 因為,

  • 一個空數(shù)組不包含明確的 null,因此不會被 null_value 替換。

此外,product_name 值僅作為 null 而不是作為在索引映射中設(shè)置的 NULL。 因為,

  • null_value 只影響數(shù)據(jù)的索引方式,它不會修改 _source 文檔。

現(xiàn)在,當(dāng) product_name 為 null 或空數(shù)組時,如何將兩個文檔都放入結(jié)果中?

選項2:使用 MUST_NOT 查詢

讓我們定義沒有 null_value 的索引映射和與上面相同的索引文檔。

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

現(xiàn)在你可以使用以下查詢:

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

上述查詢的結(jié)果,它現(xiàn)在返回兩個結(jié)果:

`
 {
   "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 查詢一起使用的優(yōu)點:

  • 此選項 2 不依賴于字段的數(shù)據(jù)類型,無論字段的數(shù)據(jù)類型如何,它都會起作用,但選項 1 null_value 需要與字段的數(shù)據(jù)類型相同。 例如,長字段不能有字符串 null_value。
  • 選項 1 不適用于文本類型的字段,因為 Elasticsearch 不允許為文本類型的字段設(shè)置 null_value 參數(shù)。
  • 選項 2 也是單一且高效的解決方案,因為 1) 它不需要根據(jù)字段映射中定義的值添加 null 值的開銷。2)索引大小也會變小,導(dǎo)致索引變少,搜索查詢變快。

以上就是詳解如何在Elasticsearch中搜索空值的詳細(xì)內(nèi)容,更多關(guān)于Elasticsearch搜索空值的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中jieba庫(中文分詞庫)使用安裝教程

    python中jieba庫(中文分詞庫)使用安裝教程

    這篇文章主要介紹了python中jieba庫(中文分詞庫)使用安裝教程,jieba庫是通過中文詞庫的方式來識別分詞的。它首先利用一個中文詞庫,通過詞庫計算漢字之間構(gòu)成詞語的關(guān)聯(lián)概率,所以通過計算漢字之間的概率,就可以形成分詞的結(jié)果,需要的朋友可以參考下
    2023-04-04
  • 詳解Spring Boot實戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作

    詳解Spring Boot實戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作

    本篇文章主要介紹了Spring Boot實戰(zhàn)之Rest接口開發(fā)及數(shù)據(jù)庫基本操作,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • java實現(xiàn)Api接口加密通信方式

    java實現(xiàn)Api接口加密通信方式

    這篇文章主要介紹了java實現(xiàn)Api接口加密通信方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 一文帶你了解SpringBoot的啟動原理

    一文帶你了解SpringBoot的啟動原理

    大家通常只需要給一個類添加一個@SpringBootApplication 注解,然后再加一個main 方法里面固定的寫法 SpringApplication.run(Application.class, args);那么spring boot 到底是如何啟動服務(wù)的呢,接下來咱們通過源碼解析,需要的朋友可以參考下
    2023-05-05
  • Springboot整合Flowable6.x導(dǎo)出bpmn20的步驟詳解

    Springboot整合Flowable6.x導(dǎo)出bpmn20的步驟詳解

    這篇文章主要介紹了Springboot整合Flowable6.x導(dǎo)出bpmn20,Flowable流程引擎可用于部署B(yǎng)PMN 2.0流程定義,可以十分靈活地加入你的應(yīng)用/服務(wù)/構(gòu)架,本文給出兩種從flowable導(dǎo)出流程定義bpmn20.xml的方式,需要的朋友可以參考下
    2023-04-04
  • java中Class.forName方法的作用詳解

    java中Class.forName方法的作用詳解

    Class.forName(xxx.xx.xx) 返回的是一個類,但Class.forName方法的作用到底是什么終?下面這篇文章就來給大家詳細(xì)介紹了關(guān)于java中Class.forName方法的作用,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • SpringMVC整合mybatis實例代碼

    SpringMVC整合mybatis實例代碼

    MyBatis 的前身就是 iBatis 。是一個數(shù)據(jù)持久層(ORM)框架。下面通過本文給大家介紹SpringMVC整合mybatis實例代碼,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • springboot 設(shè)置server.port不生效的原因及解決

    springboot 設(shè)置server.port不生效的原因及解決

    這篇文章主要介紹了springboot 設(shè)置server.port不生效的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 使用java實現(xiàn)猜拳小游戲

    使用java實現(xiàn)猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了使用java實現(xiàn)猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java實現(xiàn)的漢字轉(zhuǎn)五筆功能實例

    java實現(xiàn)的漢字轉(zhuǎn)五筆功能實例

    這篇文章主要介紹了java實現(xiàn)的漢字轉(zhuǎn)五筆功能,結(jié)合具體實例形式分析了java基于字符串遍歷與編碼轉(zhuǎn)換等操作實現(xiàn)五筆編碼獲取的相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06

最新評論