最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何在Elasticsearch中搜索空值

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

引言

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

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

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

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

讓我們創(chuàng)建索引名稱(chē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 只返回一個(gè)文檔而不返回第二個(gè)具有空數(shù)組的文檔? 因?yàn)椋?/p>

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

此外,product_name 值僅作為 null 而不是作為在索引映射中設(shè)置的 NULL。 因?yàn)椋?/p>

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

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

選項(xiàng)2:使用 MUST_NOT 查詢

讓我們定義沒(méi)有 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)在返回兩個(gè)結(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)點(diǎn):

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

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

相關(guān)文章

  • Java中使用opencsv讀寫(xiě)csv文件示例

    Java中使用opencsv讀寫(xiě)csv文件示例

    這篇文章主要介紹了Java中使用opencsv讀寫(xiě)csv文件示例,本文給出了讀CSV文件、寫(xiě)CSV文件、自定義分隔符、生成Javabeans等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Java DefaultListableBeanFactory接口超詳細(xì)介紹

    Java DefaultListableBeanFactory接口超詳細(xì)介紹

    這篇文章主要介紹了Java DefaultListableBeanFactory接口,DefaultListableBeanFactory是整個(gè)bean加載的核心部分,是Spring注冊(cè)機(jī)加載bean的默認(rèn)實(shí)現(xiàn)
    2022-11-11
  • MyBatis執(zhí)行批處理操作的實(shí)現(xiàn)示例

    MyBatis執(zhí)行批處理操作的實(shí)現(xiàn)示例

    在MyBatis中,批處理操作是一種高效執(zhí)行多條語(yǔ)句的方式,下面就來(lái)介紹一下MyBatis執(zhí)行批處理操作的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Java利用OSHI實(shí)現(xiàn)獲取機(jī)器的硬件信息

    Java利用OSHI實(shí)現(xiàn)獲取機(jī)器的硬件信息

    OSHI(Operating System and Hardware Information)是一個(gè)開(kāi)源的Java庫(kù),用于獲取操作系統(tǒng)和硬件的詳細(xì)信息,下面我們就來(lái)看看他的具體使用吧
    2024-11-11
  • 詳解java中各類(lèi)鎖的機(jī)制

    詳解java中各類(lèi)鎖的機(jī)制

    這篇文章為大家總結(jié)了java中常見(jiàn)的鎖(互斥鎖、讀寫(xiě)鎖、公平鎖與非公平鎖等)的機(jī)制以及如何使用,文中示例代碼講解詳細(xì),需要的可以學(xué)習(xí)一下
    2021-12-12
  • 關(guān)于Spring事務(wù)隔離、傳播屬性與@Transactional注解

    關(guān)于Spring事務(wù)隔離、傳播屬性與@Transactional注解

    這篇文章主要介紹了關(guān)于事務(wù)隔離、Spring傳播屬性與@Transactional注解,如果一組處理步驟或者全部發(fā)生或者一步也不執(zhí)行,我們稱(chēng)該組處理步驟為一個(gè)事務(wù),需要的朋友可以參考下
    2023-05-05
  • Java 爬蟲(chóng)如何爬取需要登錄的網(wǎng)站

    Java 爬蟲(chóng)如何爬取需要登錄的網(wǎng)站

    這篇文章主要介紹了Java 爬蟲(chóng)如何爬取需要登錄的網(wǎng)站,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • mybatis plus使用redis作為二級(jí)緩存的方法

    mybatis plus使用redis作為二級(jí)緩存的方法

    這篇文章主要介紹了mybatis plus使用redis作為二級(jí)緩存的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java中String判斷值為null或空及地址是否相等的問(wèn)題

    Java中String判斷值為null或空及地址是否相等的問(wèn)題

    這篇文章主要介紹了Java中String判斷值為null或空及地址是否相等的問(wèn)題,文中舉了簡(jiǎn)單的例子對(duì)字符串類(lèi)型的值和地址問(wèn)題進(jìn)行講解,需要的朋友可以參考下
    2016-01-01
  • 關(guān)于MyBaties的基本配置標(biāo)簽總結(jié)

    關(guān)于MyBaties的基本配置標(biāo)簽總結(jié)

    今天給大家?guī)?lái)的是關(guān)于MyBaties基礎(chǔ)的相關(guān)知識(shí),文章圍繞著MyBaties的基本配置標(biāo)簽展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

于田县| 城口县| 阳谷县| 彝良县| 弥渡县| 巨野县| 巫山县| 尚志市| 连江县| 石屏县| 梁山县| 宁河县| 玛多县| 盱眙县| 贵港市| 遵化市| 星子县| 奉节县| 普兰县| 大安市| 师宗县| 横山县| 高碑店市| 高淳县| 商城县| 江西省| 个旧市| 江油市| 界首市| 墨江| 沧源| 黎川县| 闻喜县| 鹤庆县| 慈溪市| 东阳市| 杭锦旗| 涟源市| 保靖县| 茂名市| 宝鸡市|