无心中看到了ES的mapping中有store字段,做为一个ES菜鸡,有必要对这个字段进行下笔记。html
_source字段我在们进行检索时至关重要,app
ES默认检索只会返回ID,若是在{"enabled":false}状况下,你需经过根据这个ID去去倒排索引中去取每一个Field数据,效率不高。elasticsearch
而反之,在{"enabled":true}的状况下能够根据ID直接检索对应source JSON的字段,不用去倒排索引去按Field取数据。学习
尽管_source
很是有用, 但它确实会占用索引的存储空间, 因此也能够禁用(enabled false)、启用状态的压缩策略(compress)。spa
压缩的策略有两类:.net
默认为no,code
若是在{"store":yes}的状况下,ES会对该字段单独存储倒排索引,每次根据ID检索的时候,会多走一次IO来从倒排索引取数据。htm
而若是_source enabled 状况下,ES能够直接根据Client类来解析_source JSON,只需一次IO就将全部字段都检索出来了。blog
{"store":yes}既然这么费力不讨好,可是仍然有两个应用场景:索引
_source\store | yes | no |
enabled | store为yes的字段从倒排索引里检索, 浪费IO次数 |
全部字段根据Client类解析实现存储的JSON串 仅需一次IO |
disabled | store为yes的字段从倒排索引里检索, 其余字段能检索不能展现 |
全部字段只能检索,不能展现 |
PS. 索引后-->可查询检索,存储后-->可展现