博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch学习之深入聚合分析五---案例实战
阅读量:5076 次
发布时间:2019-06-12

本文共 1563 字,大约阅读时间需要 5 分钟。

1. fielddata核心原理

  fielddata加载到内存的过程是lazy加载的,对一个analzyed field执行聚合时,才会加载,而且是field-level加载的,一个index的一个field,所有doc都会被加载,而不是少数doc,不是index-time创建,是query-time创建

2. fielddata内存限制

  indices.fielddata.cache.size: 20%,超出限制,清除内存已有fielddata数据,fielddata占用的内存超出了这个比例的限制,那么就清除掉内存中已有的fielddata数据,默认无限制,限制内存使用,但是会导致频繁evict和reload,大量IO性能损耗,以及内存碎片和gc

3. 监控fielddata内存使用

GET /_stats/fielddata?fields=*

GET /_nodes/stats/indices/fielddata?fields=*
GET /_nodes/stats/indices/fielddata?level=indices&fields=*

4. circuit breaker

如果一次query load的feilddata超过总内存,就会oom --> 内存溢出

circuit breaker会估算query要加载的fielddata大小,如果超出总内存,就短路,query直接失败

indices.breaker.fielddata.limit:fielddata的内存限制,默认60%

indices.breaker.request.limit:执行聚合的内存限制,默认40%
indices.breaker.total.limit:综合上面两个,限制在70%以内

5. fielddata预加载

如果真的要对分词的field执行聚合,那么每次都在query-time现场生产fielddata并加载到内存中来,速度可能会比较慢

POST /test_index/_mapping/test_type{  "properties": {    "test_field": {      "type": "string",      "fielddata": {        "loading" : "eager"       }    }  }}

  query-time的fielddata生成和加载到内存,变为index-time,建立倒排索引的时候,会同步生成fielddata并且加载到内存中来,这样的话,对分词field的聚合性能当然会大幅度增强

6. fielddata 序号标记预加载

global ordinal原理解释

doc1: status1

doc2: status2
doc3: status2
doc4: status1

有很多重复值的情况,会进行global ordinal标记

status1 --> 0

status2 --> 1

doc1: 0

doc2: 1
doc3: 1
doc4: 0

建立的fielddata也会是这个样子的,这样的好处就是减少重复字符串的出现的次数,减少内存的消耗

POST /test_index/_mapping/test_type{  "properties": {    "test_field": {      "type": "string",      "fielddata": {        "loading" : "eager_global_ordinals"       }    }  }}

 

转载于:https://www.cnblogs.com/sunfie/p/7101779.html

你可能感兴趣的文章
一页纸涵盖所有Lua基础知识点
查看>>
IntelliJ IDEA Ultimate使用
查看>>
将Microsoft SQL Server 2000数据库转换成MySQL数据库
查看>>
mac sudo: /etc/sudoers is world writable
查看>>
关于分布式爬虫
查看>>
【bzoj4636】蒟蒻的数列 离散化+线段树
查看>>
学习进度条
查看>>
strupr和strlwr字符串函数的使用
查看>>
自定义view代码
查看>>
JS匿名函数以及arguments.callee的调用
查看>>
拉筋的正确方法
查看>>
Tomcat
查看>>
纯javascript联动的例子
查看>>
短信验证码生成随机数
查看>>
大整数乘法
查看>>
用Less定义常用的CSS3效果函数及常用颜色搭配(让CSS写起来更有趣)
查看>>
自定义 jsp tag
查看>>
如果你不想让pthread_join阻塞你的进程,那么请调用pthread_detach
查看>>
不同环境下的mvn运行指令
查看>>
cookie保存信息
查看>>