#(主要是聚合使用,索引会从这里面获取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权威指南翻译相关推荐

  1. [Elasticsearch] Elasticsearch权威指南翻译目录

    为了方便大家能够更加快速地找到自己需要参考的那部分,对已经翻译完成的部分根据权威指南的目录做了相应目录,希望能够有所帮助. 起步(Getting Started) 1. 你懂的,为了搜索 英文原文链接 ...

  2. elasticsearch权威指南-中文

    elasticsearch权威指南-中文 Table of Contents 1. Introduction 2. 入门 i. 是什么 ii. 安装 iii. API iv. 文档 v. 索引 vi. ...

  3. elasticsearch: 权威指南_你还不会Elasticsearch的CUD?

    近端时间在搬砖过程中对es进行了操作,但是对es查询文档不熟悉,所以这两周都在研究es,简略看了<Elasticsearch权威指南>,摸摸鱼又是一天. es是一款基于Lucene的实时分 ...

  4. Elasticsearch权威指南

    在关于Elasticsearch的众多书籍.博客等材料当中,地位最高的自然是Elasticsearch权威指南,若想真正玩转ES,阅读指南是必经之路. 中文版信息 <Elasticsearch: ...

  5. Introduction | Elasticsearch权威指南(中文版) | 好的博文地址|官方资源所在位置

    权威指南 https://es.xiaoleilu.com/170_Relevance/10_Scoring_theory.html 好的博文地址(以下博文可以作为学习参考资料) https://bl ...

  6. Elasticsearch: 权威指南 » 聚合 » Doc Values and Fielddata » 聚合与分析

    2019独角兽企业重金招聘Python工程师标准>>> 有些聚合,比如 terms 桶, 操作字符串字段.字符串字段可能是 analyzed 或者 not_analyzed , 那么 ...

  7. es scroll 时间_游标查询 Scroll | Elasticsearch: 权威指南 | Elastic

    游标查询 Scrolledit scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价. 游标查询允许我们 先做查询初始化,然后再批量地拉 ...

  8. ElasticSearch权威指南学习(结构化查询)

    请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ...

  9. 【Elasticsearch 权威指南学习笔记】结构化搜索

    结构化搜索(Structured search) 是指有关探询那些具有内在结构数据的过程.比如日期.时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作.比较常见的操作包括比较数字 ...

最新文章

  1. Linux环境下路由表配置一
  2. MySQL-分库分表初探
  3. Jquery中 实现气泡消息提示
  4. 在Linux服务器上配置phpMyAdmin--允许空密码
  5. Android工程中R.java文件的重新生成——注意资源文件的错误
  6. PHP 一个比较完善的文件上传(转).
  7. 浅析低功耗广域网及在智慧城市中的应用
  8. python下载大文件mp4_python下载mp4 同步和异步下载支持断点续下
  9. 卢伟冰:小米Civi女性购买用户占比超60%
  10. python程序设计采用格式框架结构_Python笔记:基于Django框架的项目架构程序设计...
  11. Linux统计文件夹下文件数量
  12. 常见8种无线通信协议简介
  13. 【C++】算法集锦(11):敏感词过滤算法(DFA)
  14. 物联网ARM开发高级
  15. 随便写了个猪八戒网的任务小助手“小八戒”,需要的拿去
  16. ant下载与本地配置
  17. 简单工厂、工厂、抽象工厂
  18. 华为云主机装oracle,hwcloud-通过华为云镜像服务创建ECS-镜像服务介绍与安装Redhat6.8...
  19. MATLAB 迷宫游戏
  20. ACM图论+数据结构杂题总结

热门文章

  1. Javascript和BHO的相互调用简介
  2. “吃个汤”完成A+轮近亿元融资,五岳资本和凯信资本联合领投
  3. 个人记录-LeetCode 75. Sort Colors
  4. cxf的web service服务,包含client端、service端
  5. Java虚拟机垃圾回收相关知识点全梳理(下)
  6. Android病毒查杀原理,Android编程之杀毒的实现原理及具体实例
  7. chrome 新版chrome浏览器禁用和开启flash功能
  8. Windows 10 不能访问Samba共享
  9. 【你还在烦恼你的实验报告吗?】C语言结课实验——学生成绩管理系统
  10. FTP服务器架设--架设篇(转)