搜索结果正在快递途中

急,es亿级别数据量查询慢,目前不知道怎么优化了

Elasticsearch | 作者 heartM | 发布于2021年01月06日 | 阅读数:3959

目前做的项目,文档9000多万,分完词kibana监控上得数据是692g,资源是7台,每台16g。监控显示的内存一共是109g,jvm一共分配得43g。设置的20片,但是监控⬆️总分片是104片。但是比如用 山东省去第一次查很慢。有15秒。
已邀请:

xiaoyanghapi - Elasticsearch 爱好者

赞同来自: heartM

9000w数据15s有点太慢了....个人想法可以从如下两个角度来优化:
1. ES集群层面
    a: 在低峰期进行强制的segment合并
    b: 将集群的refresh时间调大(尽量让单个segment生成的别太小)
    c: 根据机器的性能指标进行适当的增加机器和内存(7台机器20个分片这样划分不是很合理,尽量让没台机器上的分片数一致)
2. 查询语句层面
    a: 查询尽量让获取的数据集小的放到查询语句前边(eg:a条件查出来数据是5条,b条件查出来数据是1k,c条件查出来1w,a和b在前性能会好一点)
    b: 根据explain具体分析哪个子查询有问题(eg: 5.x版本的es,keyword查询会比long查询性能好)
    等等

FFFrp

赞同来自:

把查询语句发出来,可以加资源吗,16G内存太少了

heartM

赞同来自:

合并段效果明显,当初索引了数据集后有689g,segment有632个,合并后速度确实提升了些。有一点不明白,明明是20片,为什么kibana上indices下有主分片63,副分片43

要回复问题请先登录注册