1. 前言
众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设置为no?设置为yes是否是重复的存储呢?
2. store属性与_source的关系
当你将一个field的store属性设置为true,这个会在lucene层面处理。lucene是倒排索引,可以执行快速的全文检索,返回符合检索条件的文档id列表。在全文索引之外,lucene也提供了存储字段的值的特性,以支持提供id的查询(根据id得到原始信息)。通常我们在lucene层面存储的field的值是跟随search请求一起返回的(id+field的值)。es并不需要存储你想返回的每一个field的值,因为默认情况下每 一个文档的的完整信息都已经存储在_source中了,因此可以跟随查询结构返回你想要的所有field值。
注意:
从每一个stored field中获取值都需要一次磁盘io,如果想获取多个field的值,就需要多次磁盘io,但是,如果从_source中获取多个field的值,则只 需要一次磁盘io,因为_source只是一个字段而已。所以在大多数情况下,从_source中获取是快速而高效的。
通俗的讲: store 的意思是,是否在

本文探讨ElasticSearch中store属性与_source的关系。store属性决定字段是否在倒排索引外独立存储,以减少带宽消耗和提高性能。默认情况下,_source包含了所有字段,但针对大内容字段,设置store为true能单独存储,减少返回时的带宽影响。同时,不存储的字段仍可被查询,但需权衡额外的IO开销。若store和_index选项都为false,字段无法返回也无法高亮。
最低0.47元/天 解锁文章
1735

被折叠的 条评论
为什么被折叠?



