field data-es控制聚合内存使用-elasticsearch权威指南翻译
#(主要是聚合使用,索引会从这里面获取term数据)
聚合通常通过一个叫fielddata的结构进行工作,fielddata经常会吃集群大量的内存,所以理解它咋工作的是非常重要的。
fileddata能飞快的加载到内存中,or built at index time and stored on disk。后面我们会谈论到在硬盘上的fileddata-doc values,现在我们要谈的是内存中的fielddata,这个是es的默认设置,也许将来会改变。
倒排索引的存在仅仅是对于核心的操作是非常高效的,倒排索引主要用于发现一个term是所在的那些文档,而对于一个文档中哪些term存在表现并不是非常好,agg却需要第二种场景。
看看下面这种场景
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"
}
}
}
}
这个查询是简单并且高效的,倒排索引通过term进行排序,首先我们发现brown在terms列表中,然后遍历所有列看看哪个doc包含brown,我们可以非常轻松的发现doc_1 和doc_2有
对于agg部分,我们需要发现doc_1和doc_2中所有的独立term(用term去doc搜),使用倒排索引去做这件事情是非常昂贵的,我们必须在doc_1和doc_2中迭代所有独立的term,这将是非常慢的,而且随着文档和term的增加会越来越慢。
fielddata通过颠倒关系解决这个问题,我们得到一个index maps terms,就是文档包含term,如下
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收集独立的token(用doc得到term),然后set即可。
fielddata的缓存数据是针对每个segment的,换句话说,当一个新的segment可用于搜索的时候,老的segment中的fielddata仍然是可用的,仅仅是新的fileddata需要再加载到内存中罢了。
当然,搜索和聚合是密不可分的,搜索通过倒排索引查询数据,聚合收集数据通过fileddata,但fielddata是由倒排数据生成的。
这个章节的剩下部分,会包含减少fileddata的内存占用还有增加执行速度。
fileddata不仅仅用在聚合,对于任何一种需要查看一个文档中包含的值的方法中都会用到,还有sorting,那些使用到field values的脚本,父子关系,还有查询filter等,例如 geo_distance filter。
field data-es控制聚合内存使用-elasticsearch权威指南翻译相关推荐
- [Elasticsearch] Elasticsearch权威指南翻译目录
为了方便大家能够更加快速地找到自己需要参考的那部分,对已经翻译完成的部分根据权威指南的目录做了相应目录,希望能够有所帮助. 起步(Getting Started) 1. 你懂的,为了搜索 英文原文链接 ...
- elasticsearch权威指南-中文
elasticsearch权威指南-中文 Table of Contents 1. Introduction 2. 入门 i. 是什么 ii. 安装 iii. API iv. 文档 v. 索引 vi. ...
- elasticsearch: 权威指南_你还不会Elasticsearch的CUD?
近端时间在搬砖过程中对es进行了操作,但是对es查询文档不熟悉,所以这两周都在研究es,简略看了<Elasticsearch权威指南>,摸摸鱼又是一天. es是一款基于Lucene的实时分 ...
- Elasticsearch权威指南
在关于Elasticsearch的众多书籍.博客等材料当中,地位最高的自然是Elasticsearch权威指南,若想真正玩转ES,阅读指南是必经之路. 中文版信息 <Elasticsearch: ...
- Introduction | Elasticsearch权威指南(中文版) | 好的博文地址|官方资源所在位置
权威指南 https://es.xiaoleilu.com/170_Relevance/10_Scoring_theory.html 好的博文地址(以下博文可以作为学习参考资料) https://bl ...
- Elasticsearch: 权威指南 » 聚合 » Doc Values and Fielddata » 聚合与分析
2019独角兽企业重金招聘Python工程师标准>>> 有些聚合,比如 terms 桶, 操作字符串字段.字符串字段可能是 analyzed 或者 not_analyzed , 那么 ...
- es scroll 时间_游标查询 Scroll | Elasticsearch: 权威指南 | Elastic
游标查询 Scrolledit scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价. 游标查询允许我们 先做查询初始化,然后再批量地拉 ...
- ElasticSearch权威指南学习(结构化查询)
请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...
- 【Elasticsearch 权威指南学习笔记】结构化搜索
结构化搜索(Structured search) 是指有关探询那些具有内在结构数据的过程.比如日期.时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作.比较常见的操作包括比较数字 ...
最新文章
- Linux环境下路由表配置一
- MySQL-分库分表初探
- Jquery中 实现气泡消息提示
- 在Linux服务器上配置phpMyAdmin--允许空密码
- Android工程中R.java文件的重新生成——注意资源文件的错误
- PHP 一个比较完善的文件上传(转).
- 浅析低功耗广域网及在智慧城市中的应用
- python下载大文件mp4_python下载mp4 同步和异步下载支持断点续下
- 卢伟冰:小米Civi女性购买用户占比超60%
- python程序设计采用格式框架结构_Python笔记:基于Django框架的项目架构程序设计...
- Linux统计文件夹下文件数量
- 常见8种无线通信协议简介
- 【C++】算法集锦(11):敏感词过滤算法(DFA)
- 物联网ARM开发高级
- 随便写了个猪八戒网的任务小助手“小八戒”,需要的拿去
- ant下载与本地配置
- 简单工厂、工厂、抽象工厂
- 华为云主机装oracle,hwcloud-通过华为云镜像服务创建ECS-镜像服务介绍与安装Redhat6.8...
- MATLAB 迷宫游戏
- ACM图论+数据结构杂题总结
热门文章
- Javascript和BHO的相互调用简介
- “吃个汤”完成A+轮近亿元融资,五岳资本和凯信资本联合领投
- 个人记录-LeetCode 75. Sort Colors
- cxf的web service服务,包含client端、service端
- Java虚拟机垃圾回收相关知识点全梳理(下)
- Android病毒查杀原理,Android编程之杀毒的实现原理及具体实例
- chrome 新版chrome浏览器禁用和开启flash功能
- Windows 10 不能访问Samba共享
- 【你还在烦恼你的实验报告吗?】C语言结课实验——学生成绩管理系统
- FTP服务器架设--架设篇(转)