elasticsearch mapping之store
_source字段存儲的是索引的原始內容,那store屬性的設置是為何呢?es為什么要把store的默認取值設置為no?設置為yes是否是重復的存儲呢?
默認情況下,字段的值是可以被索引到的(即:index:true),但是沒有被存儲(即:store: false),而這就意味著該字段可以search到,但是原始字段的值確無法被檢索。
因為字段的值已經在_source中有一份了,這是默認存儲的。如果文檔的某一字段設置了 store 為 yes (默認為 no),這時候會在 _source 存儲之外再為這個字段獨立進行存儲,這么做的目的主要是針對內容比較多的字段,放到 _source 返回的話,因為_source 是把所有字段保存為一份文檔,命中后讀取只需要一次 IO,包含內容特別多的字段會很占帶寬影響性能,通常我們也不需要完整的內容返回(可能只關心摘要),這時候就沒必要放到 _source 里一起返回了(當然也可以在查詢時指定返回字段)。
對內容太長的字段,將 store 設置為 yes ,一般來說還應該在 _source 排除 exclude 掉這個字段,這時候索引的字段,不會保存在 _source 里了,會獨立存儲一份,查詢時 _source 里也沒有這個字段了,但是還是可以通過指定返回字段來獲取,但是會有額外的 IO 開銷,因為 _source 的讀取只有一次 IO ,而已經 exclude 并設置 store 的字段,是獨立存儲的需要一個新的 IO 。
例如,如果您的文檔包含a title,a date和非常大的content 字段,您可能只想檢索title和date,而不是從更大的_source字段中抽取想要的字段:
總結
以上是生活随笔為你收集整理的elasticsearch mapping之store的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elasticsearch mappin
- 下一篇: elasticsearch mappin