原文地址: https://www.cnblogs.com/zklidd/p/6149120.html

0、故事引入

无意中看到了ES的mapping中有store字段,作为一个ES菜鸡,有必要对这个字段进行下笔记。

1、_source

_source字段我在们进行检索时相当重要,

ES默认检索只会返回ID,如果在{"enabled":false}情况下,你需通过根据这个ID去去倒排索引中去取每个Field数据,效率不高。

而反之,在{"enabled":true}的情况下可以根据ID直接检索对应source JSON的字段,不用去倒排索引去按Field取数据。

尽管_source非常有用, 但它确实会占用索引的存储空间, 所以也可以禁用(enabled false)、启用状态的压缩策略(compress)。

压缩的策略有两类:

  • compress:是否进行压缩,建议一般情况下将其设为true
  • "includes" : ["author", "name"], "excludes" : ["sex"]

2、store

默认为no,

如果在{"store":yes}的情况下,ES会对该字段单独存储倒排索引,每次根据ID检索的时候,会多走一次IO来从倒排索引取数据。

而如果_source enabled 情况下,ES可以直接根据Client类来解析_source JSON,只需一次IO就将所有字段都检索出来了。

{"store":yes}既然这么费力不讨好,但是仍然有两个应用场景:

  • 文档很长,检索所有文档或者存储所有文档、获取所有field的代价比较大
  • 仅仅针对某几个字段进行re-index的时候

3、总结

_source\store  yes no
enabled

store为yes的字段从倒排索引里检索,

浪费IO次数

所有字段根据Client类解析实现存储的JSON串

仅需一次IO

disabled

store为yes的字段从倒排索引里检索,

其他字段能检索不能展示  

所有字段只能检索,不能展示

PS. 索引后-->可查询检索,存储后-->可展示

最新文章

  1. C#中的委托与事件并存的理由
  2. [TCPIP] 分层 Note
  3. PHP类和对象之间的关系
  4. 开源项目大全 >> ...
  5. onethink入门笔记(二)
  6. [译]简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站
  7. CSS中background背景色的作用范围
  8. oracle11g导入到10g
  9. 【EasyUI】Combobox的联动和onChange/onSelect事件绑定
  10. POJ 1026 Cipher(置换群)
  11. Android studio 开发环境搭建
  12. Android中对手机文件进行读写
  13. Ubuntu14.04下手动建立快捷方式
  14. css脱离文档流
  15. 【HDOJ 2150】线段交叉问题
  16. 编译httpd细节
  17. mysql分组查询前n条数据
  18. 正则去除字符串中的html标签,但不去除<br>标签
  19. 【学习总结】GirlsInAI ML-diary day-10-if条件执行
  20. springMVC的配置与使用

热门文章

  1. git命令中的--是什么意思?
  2. String中intern方法的作用
  3. DecimalField的使用
  4. Dockerfile 常见指令的意义/常见的使用方式/使用示例/
  5. iis7设置http跳转https实测可用
  6. MapReduce内存调优
  7. linux学习9 运维基本功-Linux常用基础命令实战应用
  8. [SDOI2010]捉迷藏 K-Dtree
  9. A@[G!C]%008
  10. 如何使用Processing获取图片中每一个像素的坐标