05-doc-values-es控制聚合内存使用-elasticsearch权威指南翻译

前端之家收集整理的这篇文章主要介绍了05-doc-values-es控制聚合内存使用-elasticsearch权威指南翻译前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在内存中的doc values是被heap限制的,横向进行扩展可以一定情况下解决这个问题,但你会发现你即使扩充节点后,重重的agg会在其他节点没有充分利用的时候花光你的HEAP空间。

默认fielddata会写入内存中,但这不是唯一的选择,也可以写入到硬盘中,同时能达到同样的功能,但不是内存中的fielddata而是硬盘上的docvalue了。

doc value在1.0被加入进去,直到最近,doc value变的很慢,从多个方面,es和lucene已经把瓶颈问题解决了。

现在doc value比fielddata慢10%-25%,主要来自两个因素:

doc value存在于硬盘,但这个允许执行足够大的数据,同时可以使得ES_HEAP_SIZE设小,来提高垃圾回收以及系统稳定性。

doc values是在index的时候建立,而不是在search的时候建立,fielddata是在query倒排索引的时候建立,这样可以提高doc values的效率。

在内存和硬盘间的数据交换也会轻微的减慢fielddata,而doc value是异常的高效,所以对于很多的查询,你甚至感觉不到轻微的减慢,同时加快垃圾回收,提高初始时间可能是赚了。

这样充分利用了filesystem cache,如果这些数据常驻filesystem cache,等同于RAM了


enabling doc values

doc values除了不能用在analyzed字段上都能用,而且设置是field级别的,这样你可以fielddata和doc value结合使用。

PUT /music/_mapping/song

{

"properties" : {

"tag": {

"type": "string",

"index" : "not_analyzed",

"doc_values": true

}

}

}



将来可能doc value会成为默认值。

猜你在找的设计模式相关文章