多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 元数据:_source 字段 默认情况下,Elasticsearch 用 JSON 字符串来表示文档主体保存在 `_source` 字段中。像其他保存的字段一样,`_source` 字段也会在写入硬盘前压缩。 这几乎始终是需要的功能,因为: * 搜索结果中能得到完整的文档 —— 不需要额外去别的数据源中查询文档 * 如果缺少 `_source` 字段,部分 `更新` 请求不会起作用 * 当你的映射有变化,而且你需要重新索引数据时,你可以直接在 Elasticsearch 中操作而不需要重新从别的数据源中取回数据。 * 你可以从 `_source` 中通过 `get` 或 `search` 请求取回部分字段,而不是整个文档。 * 这样更容易排查错误,因为你可以准确的看到每个文档中包含的内容,而不是只能从一堆 ID 中猜测他们的内容。 即便如此,存储 `_source` 字段还是要占用硬盘空间的。假如上面的理由对你来说不重要,你可以用下面的映射禁用 `_source` 字段: ``` PUT /my_index { "mappings": { "my_type": { "_source": { "enabled": false } } } } ``` 在搜索请求中你可以通过限定 `_source` 字段来请求指定字段: ``` GET /_search { "query": { "match_all": {}}, "_source": [ "title", "created" ] } ``` <!-- SENSE: 070_Index_Mgmt/31_Source_field.json --> 这些字段会从 `_source` 中提取出来,而不是返回整个 `_source` 字段。 > 储存字段 > 除了索引字段的值,你也可以选择 `储存` 字段的原始值以备日后取回。使用 Lucene 做后端的用户用_储存字段_来选择搜索结果的返回值,事实上,`_source` 字段就是一个储存字段。 > 在 Elasticsearch 中,单独设置储存字段不是一个好做法。完整的文档已经被保存在 `_source` 字段中。通常最好的办法会是使用 `_source` 参数来过滤你需要的字段。