《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.1.inverted index,doc_values,store及source(3) https://developer.aliyun.com/article/1231136
存储
默认情况下,字段原始值会被索引用于查询,但是不会被存储。为了展示文档内容,通过一个叫 _source 的字段用于存储整个文档的原始值。
在字段的映射 (mapping) 设置 store: true,可以使索引单独保存这个字段。通常情况下,如果文档本身十分庞大,而一些字段又会经常单独使用,那么这样的字段,就可以设置为单独存储,然后可以使用 stored_fields 单独检索这些字段。
例如,如果你的文档包含标题、时间和一个很大的正文字段,你可能只需要检索标题、时间字段,没必要从很大的 _source 原文中解析出这些字段:
#创建索引,指定常用字段store属性 PUT /my-index-000001 { "mappings": { "properties": { "title": { "type": "text", "store": true }, "date": { "type": "date", "store": true }, "content": { "type": "text" } } } } #插入记录 PUT /my-index-000001/_doc/1 { "title": "短文本标题", "date": "2021-05-01", "content": "很长很长很长的正文字段..." } #查询结果返回stored_fields指定字段 GET /my-index-000001/_search { "stored_fields": [ "title", "date" ] }
注意:stored_fields 返回结果是数组格式。如果你需要获取原始文档,可以通过_source字段替代。
原文
_source 字段包含索引时发送的原始 JSON 文档。_source 字段本身不建索引,但是存储原始文档,以便在执行查询请求时,可以将其返回。可以通过设置,禁用原文字段,或者只存储特定字段。
_source 在 Lucene 中是映射为一个特殊的字段:
Elasticsearch 中 _source 字段的主要目的,是通过 doc_id 读取该文档的原始内容,所以只需要存储 Store 即可。
Elasticsearch 中使用 _source 字段可以实现以下功能:
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.1.inverted index,doc_values,store及source(5) https://developer.aliyun.com/article/1231134