elasticsearch中mapping的_source和store的筆記(轉)

原文地址: http://www.javashuo.com/article/p-kevisprs-gs.htmlhtml

0、故事引入

無心中看到了ES的mapping中有store字段,做爲一個ES菜雞,有必要對這個字段進行下筆記。app

一、_source

_source字段我在們進行檢索時至關重要,code

ES默認檢索只會返回ID,若是在{"enabled":false}狀況下,你需經過根據這個ID去去倒排索引中去取每一個Field數據,效率不高。htm

而反之,在{"enabled":true}的狀況下能夠根據ID直接檢索對應source JSON的字段,不用去倒排索引去按Field取數據。blog

 

儘管_source很是有用, 但它確實會佔用索引的存儲空間, 因此也能夠禁用(enabled false)、啓用狀態的壓縮策略(compress)。索引

壓縮的策略有兩類:文檔

  • compress:是否進行壓縮,建議通常狀況下將其設爲true 
  • "includes" : ["author", "name"], "excludes" : ["sex"] 

二、store

默認爲no,get

若是在{"store":yes}的狀況下,ES會對該字段單獨存儲倒排索引,每次根據ID檢索的時候,會多走一次IO來從倒排索引取數據。table

而若是_source enabled 狀況下,ES能夠直接根據Client類來解析_source JSON,只需一次IO就將全部字段都檢索出來了。效率

 

{"store":yes}既然這麼費力不討好,可是仍然有兩個應用場景:

  • 文檔很長,檢索全部文檔或者存儲全部文檔、獲取全部field的代價比較大
  • 僅僅針對某幾個字段進行re-index的時候

三、總結

_source\store  yes no
enabled

store爲yes的字段從倒排索引裏檢索,

浪費IO次數

全部字段根據Client類解析實現存儲的JSON串

僅需一次IO

disabled

store爲yes的字段從倒排索引裏檢索,

其餘字段能檢索不能展現  

全部字段只能檢索,不能展現

PS. 索引後-->可查詢檢索,存儲後-->可展現

相關文章
相關標籤/搜索