search Command

搜索引擎常用排障命令

Elasticsearch、Logstash、Kibana 排障命令速查,ES 用 _cluster/health、_cat/shards、_cluster/allocation/explain 查集群与分片,_cat/allocation 看磁盘水位,_cat/thread_pool/search 判断慢查询瓶颈,Logstash 用 _node/stats/pipelines 看 event 流转。

汇总 ES/Logstash/Kibana 常用排障命令,覆盖集群健康、分片、磁盘、pipeline、慢查询等场景

适用环境Elasticsearch / Logstash / Kibana
风险等级
最后验证2026-07-04
建议权限普通用户

Scenario

什么时候用这组命令

这组命令适合在处理“搜索引擎常用排障命令”时作为第一轮检查模板。使用时先替换占位符,再在目标机器或目标 namespace 中执行,避免在错误环境里得到误导结论。

Input

你需要先准备什么

  • 先确认是索引设计、查询写法还是集群资源问题,避免在错误的层面调参。
  • 保留慢查询、分片状态和节点资源水位,作为定位依据。
  • 区分查询慢(读路径)和写入慢(写路径),两者优化方向相反。

Risk Notes

执行风险

  • 不要在集群 red 状态下强制分配分片,可能造成数据丢失或不一致。
  • 不要随意调大熔断器阈值掩盖大查询问题,会让节点 OOM 导致更大的集群故障。
  • 不要使用深分页(from+size 超过 10000),应改用 search_after 或 scroll API。

Commands

命令详解

命令 1: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 1: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_cluster/health?pretty"

命令 2: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 2: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_cat/shards?v&h=index,shard,prirep,state,unassigned.reason,node"

命令 3: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 3: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_cluster/allocation/explain?pretty"

命令 4: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 4: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_cat/allocation?v"

命令 5: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 5: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_nodes/stats/indices/search?pretty"

命令 6: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 6: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_cat/thread_pool/search?v&h=node_name,active,queue,rejected,completed"

命令 7: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 7: 发起 HTTP/网络探测
curl -X GET "http://localhost:9600/_node/stats/pipelines?pretty"

命令 8: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 8: 发起 HTTP/网络探测
curl -X GET "http://localhost:9200/_cat/indices?v&h=index,health,status,docs.count,store.size&s=store.size:desc"

命令 9: 发起 HTTP/网络探测

用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。

  • 确认命令运行位置正确。
  • 保留关键输出,方便和修复后对比。
命令 9: 发起 HTTP/网络探测
curl -X GET "http://localhost:5601/api/status"

Workflow

建议执行顺序

按顺序执行,不要跳过确认类命令

先用只读命令确认状态,再执行会改变状态的命令。汇总 ES/Logstash/Kibana 常用排障命令,覆盖集群健康、分片、磁盘、pipeline、慢查询等场景

  • 集群健康:用 _cluster/health 与 _cat/indices 快速判断 red/yellow 范围
  • 分片排查:用 _cat/shards 定位 UNASSIGNED 分片,配合 _cluster/allocation/explain 查原因
  • 磁盘水位线:用 _cat/allocation 查看节点磁盘占用,结合 _cluster/settings 看阈值
  • 慢查询:用 _nodes/stats/indices/search 与 _cat/thread_pool/search 判断搜索瓶颈
  • Logstash:用 _node/stats/pipelines 看 pipeline event 流转与积压
  • Kibana:用 /api/status 检查 Kibana 服务状态与 ES 连接
按顺序执行,不要跳过确认类命令
curl -X GET "http://localhost:9200/_cluster/health?pretty"
curl -X GET "http://localhost:9200/_cat/shards?v&h=index,shard,prirep,state,unassigned.reason,node"
curl -X GET "http://localhost:9200/_cluster/allocation/explain?pretty"

把命令输出变成结论

命令本身不是结论。每次执行后要回答:目标是否存在、状态是否异常、异常是否能解释用户看到的现象。

  • 记录关键字段,而不是整屏复制
  • 把正常路径和异常路径输出对比
  • 输出为空也要解释:是确实没有,还是权限/过滤条件不对
把命令输出变成结论
curl -X GET "http://localhost:9200/_cat/shards?v&h=index,shard,prirep,state,unassigned.reason,node"
curl -X GET "http://localhost:9200/_cluster/allocation/explain?pretty"
curl -X GET "http://localhost:9200/_cat/allocation?v"

执行前替换占位符并控制影响范围

包含 <service>、<pod>、<namespace>、<pid>、<container> 的命令必须先替换。涉及 reload、restart、KILL、vacuum、prune 的命令要确认影响范围。

  • 优先在测试环境或只读模式验证
  • 生产执行前保留回滚路径
  • 把最终可用命令写入工单或 runbook
执行前替换占位符并控制影响范围
curl -X GET "http://localhost:9200/_cat/indices?v&h=index,health,status,docs.count,store.size&s=store.size:desc"
curl -X GET "http://localhost:5601/api/status"

Verification

怎么判断命令有效

  • 命令已在正确机器、正确用户、正确 namespace 或正确仓库下执行。
  • 输出能支撑明确判断:正常、异常、权限不足、目标不存在或需要下一跳排查。
  • 对有副作用的命令,已确认执行窗口、影响范围和回滚方式。

Prevention

沉淀到日常流程

  • 监控集群 health、磁盘水位和线程池 rejected,建立趋势告警,提前发现集群问题。
  • 为索引设置 ILM 策略,自动滚动、收缩和删除,避免单索引无限膨胀导致性能下降。
  • 查询统一用 filter 上下文,并按数据量规划合理分片数,避免过度分片或分片不足。
  • 定期使用 Profile API 分析慢查询,优化查询 DSL 和索引映射。

常见问题

这些命令默认连接哪个端口?

ES 默认 9200,Logstash 默认 9600,Kibana 默认 5601;请按实际部署替换 host:port。

命令需要认证怎么办?

加 -u user:pass 参数,或使用 API Key,在请求头中传入 base64 编码的 key。

Long-tail SEO

你可能正在搜索这些报错

下面这些错误原文、场景词和中英文搜索词,都是排查同类问题时常见的入口。

  • elasticsearch 排障命令
  • ES 常用 curl 命令
  • logstash 排障命令
  • kibana api status
  • _cat/shards 命令
  • _cluster/health 排查
  • elasticsearch 命令速查