有很多人会有这样的一个疑问:

  _source字段存储的是索引的原始内容,那 store 属性的设置是为何呢?elasticsearch 为什么要把 store 的默认取值设置为 no?设置为 yes 是否是重复的存储呢?

  我们将一个 field 的值写入 elasticsearch 中,是想在这个 field 上执行 search 操作。但是,如果不显式的将该 field 的 store 属性设置为yes,同时 _source 字段 enabled 的情况下,你仍然可以获取到这个 field 的值。这就意味着在一些情况下让一个 field 不被 index 或者 store 仍然是有意义的。当你将一个field的store属性设置为true,这个会在lucene层面处理。

  elasticsearch 并不需要你单独存储需要返回的每一个 field 的值,因为默认情况下每一个文档的的完整信息都已经存储了(存储在_source字段中),因此可以跟随查询结果返回你想要的所有 field值。有一些情况下,显式的存储某些field的值是必须的:
  > 当 _source 被 disabled 的时候,或者你并不想从 source 中 parser 来得到 field 的值(即使这个过程是自动的)
  请记住:从每一个stored field中获取值都需要一次磁盘io,如果想获取多个field的值,就需要多次磁盘io,但是,如果从_source中获取多个field的值,则只需要一次磁盘io,因为_source只是一个字段而已。所以在大多数情况下,从_source中获取是快速而高效的。
  elasticsearch 中默认的设置 _source 是 enable 的,存储整个文档的值。这意味着在执行 search 操作的时候可以返回整个文档的信息。如果不想返回这个文档的完整信息,也可以指定要求返回的 field,elasticsearch 会自动从 _source 中抽取出指定 field 的值返回。

  你可以指定一些字段 store 为 true,这意味着这个field的数据将会被单独存储。这时候,如果你要求返回 field1(store:yes),es会分辨出 field1 已经被存储了,因此不会从 _source 中加载,而是从 field1 的存储块中加载。

哪些情形下需要显式的指定store属性呢?

  大多数情况并不是必须的。从 _source 中获取值是快速而且高效的。如果你的文档长度很长,存储 _source 或者从 _source 中获取 field 的代价很大,你可以显式的将某些 field 的 store 属性设置为 yes。
  优点是只查询这一个字段的值的话效率高;
  缺点如上边所说:假设你存储了10个 field,而如果想获取这10个 field的值,则需要多次的 io,
  如果从_source中获取则只需要一次,而且_source是被压缩过的。

总结:
  如果对某个 field 做了索引,则可以查询。如果 store:yes,则可以展示该field的值。
  但是如果你存储了这个doc的数据(_source enable),即使 store 为 no,仍然可以得到field的值(client去解析)。
  所以一个store设置为 no 的 field,如果 _source 被 disable,则只能检索不能展示。

ElasticStack系列之八 & _source 字段的更多相关文章

  1. ElasticSearch 2 (15) - 深入搜索系列之多字段搜索

    ElasticSearch 2 (15) - 深入搜索系列之多字段搜索 摘要 查询很少是简单的一句话匹配(one-clause match)查询.很多时候,我们需要用相同或不同的字符串查询1个或多个字 ...

  2. mongo 3.4分片集群系列之八:分片管理

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  3. Red Gate系列之八 SQL Connect 1.1.1.19 Edition 数据库连接及操作工具 完全破解+使用教程

    原文:Red Gate系列之八 SQL Connect 1.1.1.19 Edition 数据库连接及操作工具 完全破解+使用教程 Red Gate系列之八 SQL Connect 1.1.1.19 ...

  4. 单元测试系列之八:Sonar 数据库表关系整理一(续)

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:Sonar平台是目前较为流行的静态代码扫描平台,为了便于使用以及自己二次开发,有必要对它的数据库结构进行学习 ...

  5. ElasticStack系列之十六 & ElasticSearch5.x index/create 和 update 源码分析

    开篇 在ElasticSearch 系列十四中提到的问题即 ElasticStack系列之十四 & ElasticSearch5.x bulk update 中重复 id 性能骤降,继续这个问 ...

  6. elasticsearch的store属性 vs _source字段

    众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设置为no?设置为yes是否是重复的存储呢? 我们将一个field的值写入es中,要 ...

  7. nginx高性能WEB服务器系列之八--nginx日志分析与切割

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  8. elasticsearch的store属性跟_source字段——如果你的文档长度很长,存储了_source,从_source中获取field的代价很大,你可以显式的将某些field的store属性设置为yes,否则设置为no

    转自:http://kangrui.iteye.com/blog/2262860 众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设 ...

  9. ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex

    摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...

随机推荐

  1. LeetCode 461. Hamming Distance (C++)

    题目: The Hamming distance between two integers is the number of positions at which the corresponding ...

  2. MathExam作业

    作业 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estimate • ...

  3. iOS开发学习-放大长图与屏幕等宽

    /* 需要得到一个图片的放大比例,这个比例就是屏幕的宽度与图片真实宽度的比值 */ CGFloat newZoomScale = LZ_SCREEN_WIDTH / [_photoImageView. ...

  4. 使用myeclipse2014整合ss2h

    使用myeclipse2014整合ssh 新建一个webproject 创建过程中注意选择生成web.Xml   先添加struts2的能力 选择都添加过滤器的选项 Core dojo Dwr spr ...

  5. json反序列化对象

    这个是同事研究的wcf中中根据type类型反序列化json的示例 /// <summary> /// json转对象 /// </summary> /// <param ...

  6. beta冲刺7/7

    队名:Boy Next Door 燃尽图 代码写入 https://github.com/mangoqiqi/paybook/tree/master/Desktop/Web%E8%B4%A6%E5%8 ...

  7. ADT图及图的实现及图的应用

    图: 图中涉及的定义: 有向图: 顶点之间的相关连接具有方向性: 无向图: 顶点之间相关连接没有方向性: 完全图: 若G是无向图,则顶点数n和边数e满足:0<=e<=n(n-1)/2,当e ...

  8. nginx使用“sudo service nginx start”启动报错解决方案

    下载nginx的启动脚本: # wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh 将脚本添加到init.d目录和 ...

  9. 微服务架构之思维三部曲:What、Why、How

    本文转自:http://www.servicemesh.cn/?/article/49 What:什么是微服务? 某百科对微服务架构的定义和阐述:微服务可以在“自己的程序”中运行,并通过“轻量级设备与 ...

  10. EasyUseCase 一款脑图转化 Excel 测试用例工具 (1.2 版本升级)

    EasyUseCase 本工具由本人自主开发.经过内部实践有效提升测试用例编写效率200% 覆盖率可度量.利用读取xmind软件图表转换符合国人基本需求的测试用例,让手动写Excel用例的日子过去,发 ...