《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.1.inverted index,doc_values,store及source(3) /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) /article/1231134