首页 > 技术文章 > ES查询优化

TripL 2020-08-17 22:47 原文

1、上图

2、存入数据筛选

假如你向这台机器写入了300G的数据,那么就有270G左右的数据再磁盘。

比如es存储要1T,那么你的多台机器留给os cache的内存总和要有512G以上。
 
所以对存储在es中的数据进行筛选,比如就写入es id,name,age,然后其他的数据存储再hbase或者mysql中。
 
hbase适用海量数据的在线存储。
 
流程:
1、es根据name或者age搜索,拿到20个doc id
2、根据doc id到hbase中查询具体数据
 
你最好写入es的数据大小 <= filesystem cache(os cache)总和
 

3、数据预热

假如按照上面的操作,es的数据还是超过了systemfile cache,那么就可以进行数据预热。比如将最多查看的商品,提前后台搞个程序,每隔1分钟访问一次,将它刷到os cache中

4、冷热分离

将冷数据写一个索引,热数据写一个索引

假设六台机器,那么三台机器放热数据,热数据可能只占10%,那么访问热数据就能保持在os cache

5、Document设计

少用es的复杂查询语法,可以在插入的时候就将数据组装好

6、分页优化

1、不允许深度翻页、或者默认深度翻页性能好差
2、如果类似微博下拉,可以使用scroll api(一次性生成快照,翻页通过游标移动),scroll api只能一页页翻,不能随意乱跳

推荐阅读