【Elasticsearch】ES查询慢问题排查思路

在这里插入图片描述

1.概述

转载:添加链接描述

2.场景

场景1 内存参数配置不合理,文件系统缓存不足。

场景2 查询范围过大,一次查询过多的分片,如全表扫描查询。

场景3 进行深度翻页查询,如查询10000之后的结果。

场景4 查询返回的结果集过大,如10w。

场景5 查询语句不是最优,如过滤查询可以使用filter。

场景6 使用模糊匹配查询造成内存溢出的问题。

场景7 聚合查询返回的结果集过大,聚合的范围过大。

场景8 聚合查询多唯一值引起的高内存使用率。

场景9 用text字段进行排序,造成fielddata占用大量的内存。

场景10 索引段文件过多,需要定时的进行索引段合并。

场景11 分片分布不均衡,未能充分利用机器资源。

场景12 磁盘IO瓶颈。

场景13 索引数据结构mapping设计不合理,如不需要分词的keyword。

场景14 分词器设计不合理,如存在过度分词的问题。

场景15 索引分片过大,如单个分片达到100GB+。

2.问题排查步骤

  • 登录集群,检查集群是否green,是否有堆内存使用超出阈值的告警,关于内存满的问题可以参考内存满问题的处理步骤。

  • 打开查询慢日志,参考如何开启查询慢日志章节。

  • 针对具体的查询语句进行分析,可参考查询优化章节,看是否存在查询语句优化空间。

  • 查看集群的资源使用是否存在瓶颈,如磁盘IO瓶颈,需要适当的减少查询范围和查询并发。

  • 查看索引结果是否设计合理,包括索引的mapping,分词器的设计,分片大小是否合理。

  • 结合业务场景进行具体的优化。

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/113999766