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

Elasticsearch中store field與non-store field的區(qū)別說(shuō)明

 更新時(shí)間:2021年07月12日 10:52:40   作者:林大蟲子  
這篇文章主要介紹了Elasticsearch中store field與non-store field的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Elasticsearch中store field與non-store field的區(qū)別

在定義index的mapping的時(shí)候,我們可以指定某些fields是否要store(默認(rèn)是不store)

那么他們有什么區(qū)別呢?

PUT /my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "title": {
          "type": "string",
          "store": true 
        },
        "date": {
          "type": "date",
          "store": true 
        },
        "content": {
          "type": "string"
        }
      }
    }
  }
}

其實(shí)不管你將store設(shè)置為ture or false, elasticsearch都將為我們存儲(chǔ)這些field, 不同的是:

  1. 當(dāng)store為false時(shí)(默認(rèn)配置),這些field只存儲(chǔ)在"_source" field中。
  2. 當(dāng)store為true時(shí),這些field的value會(huì)存儲(chǔ)在一個(gè)跟_source平級(jí)的獨(dú)立的field中。同時(shí)也會(huì)存儲(chǔ)在_source中,所以有兩份拷貝。

那么什么情況下需要設(shè)置store field呢?一般情況有兩種情況:

  • _source field在索引的mapping 中disable了。這種情況下,如果不將某個(gè)field定義成store=true,那些將無(wú)法在返回的查詢結(jié)果中看到這個(gè)field.
  • _source的內(nèi)容非常大。這時(shí)候如果我們想要在返回的_source document中解釋出某個(gè)field的值的話,開銷會(huì)很大(當(dāng)然你也可以定義source filtering將減少network overhead),比例某個(gè)document中保存的是一本書,所以document中可能有這些field: title, date, content。假如我們只是想查詢書的title 跟date信息,而不需要解釋整個(gè)_source(非常大),這個(gè)時(shí)候我們可以考慮將title, date這些field設(shè)置成store=true。
  • 需要注意的是,看起來(lái)將field store可以減少查詢的開銷,但其實(shí)這樣也會(huì)加大disk的訪問(wèn)頻率。假如你將_source中的10個(gè)field都定義store,那么在你查詢這些field的時(shí)候會(huì)將會(huì)有10次disk seek的操作。而返回_source只有一次disk seek的操作。所以這個(gè)也是我們?cè)诙x的時(shí)候需要blance的。

elasticsearch的store屬性跟_source字段

眾所周知_source字段存儲(chǔ)的是索引的原始內(nèi)容,那store屬性的設(shè)置是為何呢?es為什么要把store的默認(rèn)取值設(shè)置為no?設(shè)置為yes是否是重復(fù)的存儲(chǔ)呢?

我們將一個(gè)field的值寫入es中,要么是想在這個(gè)field上執(zhí)行search操作(不知道具體的id),要么執(zhí)行retrieve操作(根據(jù)id來(lái)檢索)。但是,如果不顯式的將該field的store屬性設(shè)置為yes,同時(shí)_source字段enabled的情況下,你仍然可以獲取到這個(gè)field的值。這就意味著在一些情況下讓一個(gè)field不被index或者store仍然是有意義的。

當(dāng)你將一個(gè)field的store屬性設(shè)置為true,這個(gè)會(huì)在lucene層面處理。lucene是倒排索引,可以執(zhí)行快速的全文檢索,返回符合檢索條件的文檔id列表。在全文索引之外,lucene也提供了存儲(chǔ)字段的值的特性,以支持提供id的查詢(根據(jù)id得到原始信息)。通常我們?cè)趌ucene層面存儲(chǔ)的field的值是跟隨search請(qǐng)求一起返回的(id+field的值)。es并不需要存儲(chǔ)你想返回的每一個(gè)field的值,因?yàn)槟J(rèn)情況下每一個(gè)文檔的的完整信息都已經(jīng)存儲(chǔ)了,因此可以跟隨查詢結(jié)構(gòu)返回你想要的所有field值。

有一些情況下,顯式的存儲(chǔ)某些field的值是必須的:當(dāng)_source被disabled的時(shí)候,或者你并不想從source中parser來(lái)得到field的值(即使這個(gè)過(guò)程是自動(dòng)的)。請(qǐng)記住:從每一個(gè)stored field中獲取值都需要一次磁盤io,如果想獲取多個(gè)field的值,就需要多次磁盤io,但是,如果從_source中獲取多個(gè)field的值,則只需要一次磁盤io,因?yàn)開source只是一個(gè)字段而已。所以在大多數(shù)情況下,從_source中獲取是快速而高效的。

es中默認(rèn)的設(shè)置_source是enable的,存儲(chǔ)整個(gè)文檔的值。這意味著在執(zhí)行search操作的時(shí)候可以返回整個(gè)文檔的信息。如果不想返回這個(gè)文檔的完整信息,也可以指定要求返回的field,es會(huì)自動(dòng)從_source中抽取出指定field的值返回(比如說(shuō)highlighting的需求)。

你可以指定一些字段store為true,這意味著這個(gè)field的數(shù)據(jù)將會(huì)被單獨(dú)存儲(chǔ)。這時(shí)候,如果你要求返回field1(store:yes),es會(huì)分辨出field1已經(jīng)被存儲(chǔ)了,因此不會(huì)從_source中加載,而是從field1的存儲(chǔ)塊中加載。

哪些情形下需要顯式的指定store屬性呢?大多數(shù)情況并不是必須的。從_source中獲取值是快速而且高效的。如果你的文檔長(zhǎng)度很長(zhǎng),存儲(chǔ)_source或者從_source中獲取field的代價(jià)很大,你可以顯式的將某些field的store屬性設(shè)置為yes。缺點(diǎn)如上邊所說(shuō):假設(shè)你存儲(chǔ)了10個(gè)field,而如果想獲取這10個(gè)field的值,則需要多次的io,如果從_source中獲取則只需要一次,而且_source是被壓縮過(guò)的。

還有一種情形:reindex from some field,對(duì)某些字段重建索引的時(shí)候。從source中讀取數(shù)據(jù)然后reindex,和從某些field中讀取數(shù)據(jù)相比,顯然后者代價(jià)更低一些。這些字段store設(shè)置為yes比較合適。

總結(jié):

如果對(duì)某個(gè)field做了索引,則可以查詢。如果store:yes,則可以展示該field的值。

但是如果你存儲(chǔ)了這個(gè)doc的數(shù)據(jù)(_source enable),即使store為no,仍然可以得到field的值(client去解析)。

所以一個(gè)store設(shè)置為no 的field,如果_source被disable,則只能檢索不能展示。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡(jiǎn)單總結(jié)Java IO中stream流的使用方法

    簡(jiǎn)單總結(jié)Java IO中stream流的使用方法

    這篇文章主要介紹了Java IO中stream流的使用方法的簡(jiǎn)單總結(jié),包括數(shù)據(jù)流和打印流等Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-03-03
  • SpringCloud基于RestTemplate微服務(wù)項(xiàng)目案例解析

    SpringCloud基于RestTemplate微服務(wù)項(xiàng)目案例解析

    這篇文章主要介紹了SpringCloud基于RestTemplate微服務(wù)項(xiàng)目案例,在寫SpringCloud搭建微服務(wù)之前,先搭建一個(gè)不通過(guò)springcloud只通過(guò)SpringBoot和Mybatis進(jìn)行模塊之間通訊,通過(guò)一個(gè)案例給大家詳細(xì)說(shuō)明,需要的朋友可以參考下
    2022-05-05
  • java實(shí)現(xiàn)合并單元格的同時(shí)并導(dǎo)出excel示例

    java實(shí)現(xiàn)合并單元格的同時(shí)并導(dǎo)出excel示例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)合并單元格的同時(shí)并導(dǎo)出excel的相關(guān)資料,文中先進(jìn)行了簡(jiǎn)單的介紹,之后給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • Java中的五種引用類型詳解

    Java中的五種引用類型詳解

    Java中的五種引用類型:強(qiáng)引用、軟引用、弱引用、虛引用和Final引用,分別用于管理對(duì)象的生命周期,幫助垃圾回收器更高效地回收不再使用的對(duì)象
    2024-12-12
  • SpringMvc+POI處理excel表數(shù)據(jù)導(dǎo)入

    SpringMvc+POI處理excel表數(shù)據(jù)導(dǎo)入

    這篇文章主要為大家詳細(xì)介紹了SpringMvc+POI處理excel表數(shù)據(jù)導(dǎo)入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 詳解java創(chuàng)建一個(gè)女朋友類(對(duì)象啥的new一個(gè)就是)==建造者模式,一鍵重寫

    詳解java創(chuàng)建一個(gè)女朋友類(對(duì)象啥的new一個(gè)就是)==建造者模式,一鍵重寫

    這篇文章主要介紹了java建造者模式一鍵重寫,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 基于Java編寫串口通信工具

    基于Java編寫串口通信工具

    這篇文章主要為大家詳細(xì)介紹了基于Java編寫的一個(gè)帶有圖形界面的簡(jiǎn)單串口通信工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java8中利用stream對(duì)map集合進(jìn)行過(guò)濾的方法

    Java8中利用stream對(duì)map集合進(jìn)行過(guò)濾的方法

    這篇文章主要給大家介紹了關(guān)于Java8中利用stream對(duì)map集合進(jìn)行過(guò)濾的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • MybatisPlus如何自動(dòng)生成映射文件

    MybatisPlus如何自動(dòng)生成映射文件

    這篇文章主要介紹了MybatisPlus如何自動(dòng)生成映射文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • restemplate請(qǐng)求亂碼之content-encoding=“gzip“示例詳解

    restemplate請(qǐng)求亂碼之content-encoding=“gzip“示例詳解

    RestTemplate從Spring3.0開始支持的一個(gè)HTTP請(qǐng)求工具,它提供了常見的REST請(qǐng)求方案的模板,及一些通用的請(qǐng)求執(zhí)行方法 exchange 以及 execute,接下來(lái)通過(guò)本文給大家介紹restemplate請(qǐng)求亂碼之content-encoding=“gzip“,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

若羌县| 太保市| 江川县| 白沙| 承德县| 彰武县| 平定县| 原平市| 怀安县| 察哈| 加查县| 北碚区| 益阳市| 莱芜市| 西林县| 佳木斯市| 宝丰县| 卢湾区| 甘孜| 永兴县| 扎鲁特旗| 佛坪县| 荣成市| 军事| 博罗县| 嵊泗县| 遵义市| 西丰县| 广宁县| 杭锦后旗| 惠水县| 建平县| 化州市| 哈巴河县| 宿迁市| 芦山县| 收藏| 江西省| 察哈| 卢湾区| 卫辉市|