Elasticsearch默认不存储字段值是什么意思?求通俗解释
关于Elasticsearch text类型
store选项的通俗解释 官方文档原文
默认情况下,字段值会被索引以支持搜索,但不会被存储。这意味着该字段可被查询,但无法检索原始字段值。
通俗理解
这是Elasticsearch「索引与存储分离」的设计逻辑,拆解来看:
- 索引:Elasticsearch会把text字段的内容拆分成关键词,生成「倒排索引」——类似图书的索引目录,只记录关键词和对应文档的关联关系,目的是让你能快速通过关键词搜到目标文档。
- 存储:指是否单独保存该字段的原始完整值。默认不单独存储,不是说原始值丢失了——你提交的整个文档其实都存在
_source字段里,只是这个text字段本身没有被单独开辟存储空间来保存它的原始值。
举个实际例子:
假设你存入一篇文章,其中content字段是text类型:
- 你能通过搜索“Elasticsearch”找到这篇文章,因为倒排索引里已经记录了这个关键词和文档的关联;
- 如果直接指定只返回
content字段(不通过_source),默认拿不到结果,因为它没被单独存储;但你可以从_source里提取出完整的content内容。
什么时候需要开启store: true?
当你的_source字段非常大(比如包含长文本、大附件的元数据),而你只需要单独获取某个字段的原始值时,开启该字段的store选项,能减少不必要的数据传输,提升查询效率。
内容的提问来源于stack exchange,提问作者Amir reza Riahi
相关产品推荐
相关产品推荐

