原文地址: http://www.javashuo.com/article/p-kevisprs-gs.htmlhtml
無心中看到了ES的mapping中有store字段,做爲一個ES菜雞,有必要對這個字段進行下筆記。app
_source字段我在們進行檢索時至關重要,code
ES默認檢索只會返回ID,若是在{"enabled":false}狀況下,你需經過根據這個ID去去倒排索引中去取每一個Field數據,效率不高。htm
而反之,在{"enabled":true}的狀況下能夠根據ID直接檢索對應source JSON的字段,不用去倒排索引去按Field取數據。blog
儘管_source
很是有用, 但它確實會佔用索引的存儲空間, 因此也能夠禁用(enabled false)、啓用狀態的壓縮策略(compress)。索引
壓縮的策略有兩類:文檔
默認爲no,get
若是在{"store":yes}的狀況下,ES會對該字段單獨存儲倒排索引,每次根據ID檢索的時候,會多走一次IO來從倒排索引取數據。table
而若是_source enabled 狀況下,ES能夠直接根據Client類來解析_source JSON,只需一次IO就將全部字段都檢索出來了。效率
{"store":yes}既然這麼費力不討好,可是仍然有兩個應用場景:
_source\store | yes | no |
enabled | store爲yes的字段從倒排索引裏檢索, 浪費IO次數 |
全部字段根據Client類解析實現存儲的JSON串 僅需一次IO |
disabled | store爲yes的字段從倒排索引裏檢索, 其餘字段能檢索不能展現 |
全部字段只能檢索,不能展現 |
PS. 索引後-->可查詢檢索,存儲後-->可展現