Es性能优化

1. Es中10亿级别的数据量,如何提高查询效率

(1) 性能优化关键:file system cache

a. 不要期待随手挑一个参数,就可以万能的应对所有性能慢的场景

b. es依赖于底层的file system cache,如果给file system cache更多的内存,尽量让内存容纳所有的idx segment file索引数据文件,则搜索时均走内存,性能很高。如果内存较少,其他索引将存入磁盘,从磁盘搜索的性能可能是数秒。

image

c. 生产环境的最佳情况,是仅仅在es中存少量属性字段,即需要用于搜索的那些索引,额外的属性存入其他数据库中,如mysql/mongo/hbae。

d. 如果内存确实是瓶颈,可以采用数据预热,即单独做一个专门的缓存预热子系统,存储比较热门的数据到file system cache。

e. 也可以采用冷热分离,i将冷数据写入一个索引,热数据写入另一个索引,确保热数据在被预热之后,尽量留在file system cache中,别让冷数据给冲刷掉。

f. 不要让es做数据关联查询等数据,在document模型设计时考虑,将关联后的数据存入es中

g. 分页查询性能较差,因此不允许深度分页,可以用scroll api不断下拉一页一页展示, scroll一次性生成所有数据的一个快照,缺点是不适于随意跳到任何一页的情景

posted @ 2019-05-07 08:50  mengrennwpu  阅读(2034)  评论(0编辑  收藏  举报