es查询性能优化
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es查询性能优化相关的知识,希望对你有一定的参考价值。
1.如果条件允许,内存和cpu一定要足够多,要超过总数据量的1半以上最好,当然数据量很大的时候要在经常查询数据的2倍以上。
2.数据分离存储,经常查询的数据放一些索引,不经常查询的放一部分索引,然后通过唯一的id关联即可,需要查那些不经常查的数据的时候通过id查询即可,这里可以和hbase联合使用。把条件字段和经常查看的字段放在es中,不经常查看的放hbase中,这样既可以省es的空间,性能效果也俱佳
3.数据大时,每个索引的数据量不要太大,一般很大的时候可以每天一个索引,或者每月一个索引,具体看业务来选择
4.进行数据预热,即,每天或者定期后台去访问那些经常查询的数据,把它们加载到filesys_cache中去,因为es查询时,如果缓存里有该数据就直接从缓存读取,没有就去硬盘把数据加载到该缓存中,下次再查时就快很多了,所以有时候es第一次查询时会有点慢,后面就快很多了
5.es中不要做太复杂的查询,尤其是关联查询,如果有些一定要关联,关联的条件也要尽量少,比如id即可
6.可以使用fitter过滤会快很多,尽量不要存为全文索引的数据类型,
7.es不适合做长期存储,一般只挑近期的,常用的放进去即可,久远的数据或者不常查询的,可以放到hive中,那些查的少,肯定速度也不要求,所以放hive中最合适
8.查询的时候当然是副本多一些比较好,但是一般3个副本就可以了,太多也不合适
9.有钱的话,多加一点cpu和内存是最好的,这是最实在的办法,有钱了,有资源了,上面那些就显得微不足到了。
10.另外es查询的时候尽量不要排序,看情况而定吧,排序的时候可能会有点慢。
以上是关于es查询性能优化的主要内容,如果未能解决你的问题,请参考以下文章