search Roadmap
搜索引擎排障专题
搜索引擎排障专题:聚合 Elasticsearch 集群变 red、分片 unassigned、磁盘超 flood watermark 拒绝写入、慢查询与聚合超时、线程池 rejected、深分页性能差和 ILM 生命周期管理等常见问题的排障路径。
Elasticsearch 排障先看 _cluster/health 与 _cat/shards 状态和分片分配,再用 allocation/explain 定位未分配原因,最后区分是索引 mapping 设计、查询写法还是集群资源不足,避免直接强制分配掩盖根因。
Troubleshooting Path
推荐排障路线图
- 01
先看集群健康和分片分配
用 _cluster/health 和 _cat/shards 判断是 green、yellow 还是 red,定位未分配分片。
- 02
再定位磁盘水位和节点资源
看 _cat/allocation 和节点磁盘占用,超 flood watermark 会拒绝写入,超 low 会停止分配。
- 03
继续分析慢查询和线程池
区分查询慢还是写入慢,看线程池 queue/rejected 和熔断器是否触发,排查是否没走 filter 缓存。
- 04
最后处理索引生命周期和分片数
为索引设置 ILM 自动滚动删除,查询用 filter 上下文,按数据量规划合理分片数。
Before You Change
执行前检查
- 集群 red 时先 allocation/explain 看原因,不要强制分配分片
- 不要随意调大熔断器阈值掩盖大查询问题
- 删除索引释放磁盘前先确认索引名和业务归属
- 深分页用 search_after 替代 from+size
Start Here
优先阅读
Elasticsearch 集群状态 RED 排查方法
Elasticsearch 集群 health=red、主分片未分配时,用 _cluster/health 记录 unassigned_shards,通过 _cat/shards 和 _cluster/allocation/explain 定位 NODE_LEFT、DISK_FULL 等原因,恢复离线节点、清理磁盘或从副本/快照 reroute 恢复。
排障Elasticsearch 磁盘水位线排查方法
Elasticsearch 磁盘占用超过 flood_stage 水位线导致索引被置为 read_only_allow_delete、节点被踢出集群时,用 _cat/allocation 查磁盘使用率,清理无用索引和 forcemerge 释放空间,再手动 PUT _settings 解除只读限制。
排障Elasticsearch 慢查询排查方法
Elasticsearch 查询变慢或聚合超时时,开启 index.search.slowlog 抓取慢 query,用 _nodes/stats/indices/search 观察 query_time,_cat/thread_pool/search 看 active/queue/rejected 判断是 CPU 瓶颈还是队列堆积,再优化聚合、深分页和 wildcard 查询。
排障Elasticsearch 分片未分配排查方法
Elasticsearch 分片长期处于 UNASSIGNED、recovery 卡在 INITIALIZING 时,用 _cat/shards 记录索引与主副本,再调 _cluster/allocation/explain 查看 DISK_WATERMARK、NODE_LEFT、CLUSTER_RECOVERED 等 decider 原因,必要时用 _cluster/reroute 手动分配。
Latest Updates
最近更新
All Runbooks
全部相关内容
Elasticsearch 集群状态 RED 排查方法
Elasticsearch 集群 health=red、主分片未分配时,用 _cluster/health 记录 unassigned_shards,通过 _cat/shards 和 _cluster/allocation/explain 定位 NODE_LEFT、DISK_FULL 等原因,恢复离线节点、清理磁盘或从副本/快照 reroute 恢复。
排障Elasticsearch 磁盘水位线排查方法
Elasticsearch 磁盘占用超过 flood_stage 水位线导致索引被置为 read_only_allow_delete、节点被踢出集群时,用 _cat/allocation 查磁盘使用率,清理无用索引和 forcemerge 释放空间,再手动 PUT _settings 解除只读限制。
排障Elasticsearch 慢查询排查方法
Elasticsearch 查询变慢或聚合超时时,开启 index.search.slowlog 抓取慢 query,用 _nodes/stats/indices/search 观察 query_time,_cat/thread_pool/search 看 active/queue/rejected 判断是 CPU 瓶颈还是队列堆积,再优化聚合、深分页和 wildcard 查询。
排障Elasticsearch 分片未分配排查方法
Elasticsearch 分片长期处于 UNASSIGNED、recovery 卡在 INITIALIZING 时,用 _cat/shards 记录索引与主副本,再调 _cluster/allocation/explain 查看 DISK_WATERMARK、NODE_LEFT、CLUSTER_RECOVERED 等 decider 原因,必要时用 _cluster/reroute 手动分配。
排障Logstash Pipeline 堵塞排查方法
Logstash pipeline 堵塞、消息堆积或 dead_letter_queue 增长时,用 _node/stats/pipelines 查看 event_in/filtered/out 和 inflight_count 定位卡在 input/filter/output 哪一环,检查 ES 端 429 拒绝和 output duration_in_millis,再调优 pipeline.workers 与 batch.size。
命令搜索引擎常用排障命令
Elasticsearch、Logstash、Kibana 排障命令速查,ES 用 _cluster/health、_cat/shards、_cluster/allocation/explain 查集群与分片,_cat/allocation 看磁盘水位,_cat/thread_pool/search 判断慢查询瓶颈,Logstash 用 _node/stats/pipelines 看 event 流转。