Elasticsearch2.x Doc values
文档地址:
https://www.elastic.co/guide/en/elasticsearch/reference/2.4/doc-values.html
https://www.elastic.co/guide/en/elasticsearch/guide/2.x/docvalues-intro.html
https://www.elastic.co/guide/en/elasticsearch/guide/2.x/docvalues.html
https://www.elastic.co/guide/en/elasticsearch/guide/2.x/_deep_dive_on_doc_values.html#_deep_dive_on_doc_values
doc_values介绍
- 搜索时,我们需要一个“词”到“文档”列表的映射
- 排序时,我们需要一个“文档”到“词“列表的映射,换句话说,我们需要一个在倒排索引的基础上建立的“正排索引”
- 基于一个字段排序
- 基于一个字段聚合
- 执行某些filter上(如:geolocation filter)
- 在script(脚本)中引用了一个或多个字段
doc_values
PUT my_index
{"mappings": {"my_type": {"properties": {"status_code": { "type": "string","index": "not_analyzed"},"session_id": { "type": "string","index": "not_analyzed","doc_values": false}}}}
}
- status_code字段默认开启doc_values
- session_id字段禁用了doc_values,虽然被禁用但是还是可以被查询
Term Doc_1 Doc_2 Doc_3
------------------------------------
brown | X | X |
dog | X | | X
dogs | | X | X
fox | X | | X
foxes | | X |
in | | X |
jumped | X | | X
lazy | X | X |
leap | | X |
over | X | X | X
quick | X | X | X
summer | | X |
the | X | | X
------------------------------------
如果我们想为每一个包含“brown”的文档编辑一份完整的词列表,我们可能会用如下查询
GET /my_index/_search
{"query" : {"match" : {"body" : "brown"}},"aggs" : {"popular_terms": {"terms" : {"field" : "body"}}}
}
看上面的查询部分。倒排索引通过词条排好了序,所以我们首先找到包含“brown”的词条列表,然后跨列扫描所有包含“brown”的文档,这里我们很幸运的找到了“Doc_1”和“Doc_2”。
Doc Terms
-----------------------------------------------------------------
Doc_1 | brown, dog, fox, jumped, lazy, over, quick, the
Doc_2 | brown, dogs, foxes, in, lazy, leap, over, quick, summer
Doc_3 | dog, dogs, fox, jumped, over, quick, the
-----------------------------------------------------------------
有了这个结构我们就会很容易得到doc_1和doc_2所包含的词条,我们只需要通过上面的结构把两个集合合并起来就行了。
因此,查询和聚合是非常复杂的,查询文档使用的是倒排索引,聚合文档使用的是正排索引(doc_values)
深入Doc Values
通常,我们配置JVM的堆内存基本和操作系统内存各占一半(50%),由于引进了doc values所以我们可以考虑把JVM的堆内存设置得小一些,比如我们可以在一个64G的服务器上设置JVM堆内存为4 - 16GB比设置堆内存为32G更加高效。
Column-store compression(列式存储压缩)
Doc Terms
-----------------------------------------------------------------
Doc_1 | 100
Doc_2 | 1000
Doc_3 | 1500
Doc_4 | 1200
Doc_5 | 300
Doc_6 | 1900
Doc_7 | 4200
-----------------------------------------------------------------
像上面这种每行一条数据的形式,我们可以得到连续的数字块,如:[100,1000,1500,1200,300,1900,4200]。因为我们知道它们都是数字值可以被排列在一起通过一个一致的偏移量。
- 如果所有的数字值都相等(或者缺失),会设置一个标记来表示该值
- 如果所有数字值的个数小于256个,将会使用一个简单的编码表来压缩
- 如果大于了256个,看看是否存在最大公约数,存在则使用最大公约数压缩
- 如果不存在最大公约数,则存储偏移量来压缩数字。
转载于:https://www.cnblogs.com/chennanlcy/p/6591788.html
Elasticsearch2.x Doc values相关推荐
- Elasticsearch之深入了解Doc Values 和 Fielddata
基本概念 这两个概念比较像,所以大部分时候会放在一起说. 这两个概念源于Elasticsearch(后面简称ES)除了强大的搜索功能外,还可以支持排序,聚合之类的操作.搜索需要用到倒排索引,而排序和聚 ...
- Elasticsearch: 权威指南 » 聚合 » Doc Values and Fielddata » 聚合与分析
2019独角兽企业重金招聘Python工程师标准>>> 有些聚合,比如 terms 桶, 操作字符串字段.字符串字段可能是 analyzed 或者 not_analyzed , 那么 ...
- 白话Elasticsearch50-深入聚合数据分析之基于doc values正排索引的聚合内部原理
文章目录 概述 思考 知识点 举例说明 纯用倒排索引来实现的弊端 倒排索引+正排索引(doc value)的原理和优势 概述 继续跟中华石杉老师学习ES,第50篇 课程地址: https://www. ...
- ElasticSearch中doc values和fielddata
一 为什么聚合排序不适合使用倒排序索引 假设现在有以下的一个搜索: POST /ecommerce/music/_search { "size":0, "query&qu ...
- 【ElasticSearch】深入理解 ElasticSearch Doc Values
1.概述 原文地址:深入理解 ElasticSearch Doc Values 一点介绍文章:[es]Elasticsearch:inverted index,doc_values及source 前言 ...
- 白话Elasticsearch50-深入聚合数据分析之doc values机制
文章目录 概述 官网 doc value原理 (1)index-time生成 (2)核心原理与倒排索引类似 (3)性能问题:给jvm更少内存,64g服务器,给jvm最多16g column压缩 (1) ...
- lucene底层数据结构——FST,针对field使用列存储,delta encode压缩doc ids数组,LZ4压缩算法...
参考: http://www.slideshare.net/lucenerevolution/what-is-inaluceneagrandfinal http://www.slideshare.ne ...
- doc es 中type_一文带你彻底弄懂ES中的doc_values和fielddata
基本概念 这两个概念比较像,所以大部分时候会放在一起说. 这两个概念源于Elasticsearch(后面简称ES)除了强大的搜索功能外,还可以支持排序,聚合之类的操作.搜索需要用到倒排索引,而排序和聚 ...
- ES聚合查询报 can‘t load fielddata on because fielddata is unsupported on fields of type x,use doc value..
在es5.6版本的时候,使用聚合语句查询es的时候,会出现异常,关键信息如下: can't load fielddata on because fielddata is unsupported on ...
最新文章
- html5页面中鼠标悬停效果,CSS实例:非常不错的鼠标悬停TIP效果!_div+css布局教程...
- 【Python】青少年蓝桥杯_每日一题_5.09_画三角形和六边形
- curses颜色操作
- 干部年龄大 计算机水平,各级别公务员“晋升年龄表”来了,超过这个年龄,以后基本上没戏...
- 修改oracle内存大小
- 读书笔记--Head First Programming 目录
- 数据结构java学生成绩排序_数据结构学习--Java简单排序
- 路由器接口为啥不能配置为任意播地址_计算机三级网络技术(7):路由器配置及使用(下)...
- 甲骨文前高管跳槽至富士通 主抓企业级存储
- python调用wind数据_python实现从wind导入数据
- java如何导出excel_JAVA如何导出EXCEL表格
- 2020年最烂密码出炉!一秒钟就破解!
- 树莓派官方系统(raspbian)安装及使用教程
- android user-agent iso-8859-1,微信大众,平台消息接口开辟(31)微信浏览器HTTP_USER_AGENT断定...
- 简单高效记账本的具体操作方法
- 能提取HTML网页正文的网站,智能提取网页正文新方法
- ps考试引擎安装溢出屏幕
- LeetCode每日一题11.8
- 如何把图片转换jpg格式呢?
- icloud是什么?
热门文章
- python3断言_Python3断言
- linux下crontab allow,Linux下crontab命令的用法
- oracle服务器错误,oracle 11g数据库维护中错误总结
- 有三AI发布360页11万字深度学习CV算法工程师成长指导手册,可下载收藏打印,未完待续...
- 【知识星球】3D网络结构解读系列上新
- 东南亚下半年做什么产品好?解读Lazadashopee服装类热销及需求品类
- 全球及中国新鲜芒果制品市场投资份额与营销渠道分析报告2022版
- 如何克服工作经历中的挫折或低潮期
- 位运算,处理前台多选值
- 调集群,我的姿势不对,好累!