ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex
2017-02-22 12:24
726 查看
摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html
The
_sourcefield stores the JSON you send to Elasticsearch and you can choose to only return certain fields if needed, which is perfect for your use case. I have never heard that the stored fields will be faster for searches. The
_sourcefield could be bigger on disk space, but if you have to store every field there is no need to use stored fields over the
_sourcefield. If you do disable the source field it will mean:
You won’t be able to do partial updates
You won’t be able to re-index your data from the JSON in your Elasticsearch cluster, you’ll have to re-index from the data source (which is usually a lot slower).
元数据:_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" ] }
这些字段会从
_source中提取出来,而不是返回整个
_source字段。
储存字段
除了索引字段的值,你也可以选择
储存字段的原始值以备日后取回。使用 Lucene 做后端的用户用储存字段来选择搜索结果的返回值,事实上,
_source字段就是一个储存字段。
在 Elasticsearch 中,单独设置储存字段不是一个好做法。完整的文档已经被保存在
_source字段中。通常最好的办法会是使用
_source参数来过滤你需要的字段。
相关文章推荐
- ES 取部分字段(持续更新)
- ES提高数据压缩的设置——单字段,去掉source和all
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(二)
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(三)
- Mysql的XML字段部分结点更新问题
- php文档更新介绍
- hibernate 更新部分字段
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(一)
- 更新部分字段 NHibernate
- hibernate update 只更新部分字段的3种方法
- 无法复制文本文档磁盘被写保护,请去掉写保护或使用另一张磁盘。
- Hibernate 更新部分更改的字段 hibernate update
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(三)
- 软件开发最重要的一环 - 文档 (更新)
- 更新数据库字段部分内容
- hibernate如何实现部分字段更新
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(二)
- 更新数据库字段部分内容
- Database2Sharp重要更新之数据库文档的生成(国庆专辑,祝福我们的祖国)
- hibernate update 只更新部分字段的3种方法