elasticsearch中mapping的_source和store的笔记(转)
时间:2019-09-23
本文章向大家介绍elasticsearch中mapping的_source和store的笔记(转),主要包括elasticsearch中mapping的_source和store的笔记(转)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原文地址: 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. 索引后-->可查询检索,存储后-->可展示
原文地址:https://www.cnblogs.com/loveyouyou616/p/11573276.html
- 3224: Tyvj 1728 普通平衡树
- 【LeetCode 136】 关关的刷题日记32 Single Number
- 1599: [Usaco2008 Oct]笨重的石子
- 【LeetCode 136】 关关的刷题日记33 Intersection of Two
- 1218: [HNOI2003]激光炸弹
- Java多线程高并发学习笔记(一)——Thread&Runnable
- 1257: [CQOI2007]余数之和sum
- 【LeetCode 136】 关关的刷题日记34 Intersection of Two Arrays II
- 1724: [Usaco2006 Nov]Fence Repair 切割木板
- 【LeetCode 202】 关关的刷题日记35 – Leetcode 202. Happy Number
- JAVA多线程高并发学习笔记(三)——Callable、Future和FutureTask
- 算法模板——Trie树
- JavaScript Alert 函数执行顺序问题
- 算法模板——计算几何1(图形面积)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法