前置统一地址
http://192.168.20.89:9200,下文统一简写为 ES_HOST
一、集群健康监控(每日必查)
1. 集群整体健康(最常用)
curl ES_HOST/_cluster/health?pretty
状态说明:
green:全部主副本正常,安全yellow:主分片正常、副本未分配(你当前 eiptest 状态)red:主分片丢失,业务不可用,紧急处理
2. 查看所有分片分布(排查 UNASSIGNED/INITIALIZING)
curl ES_HOST/_cat/shards?v
字段释义:
p:primary 主分片;r:replica 副本STARTED:正常;INITIALIZING:同步中;UNASSIGNED:未分配
3. 查看所有节点资源、磁盘、内存
curl ES_HOST/_cat/nodes?v
4. 查看各节点磁盘占用
curl ES_HOST/_cat/allocation?v
5. 查看正在执行任务(同步 / 删除 /forcemerge)
curl ES_HOST/_tasks?pretty
6. 查看分片同步实时进度(你现在同步副本专用)
curl ES_HOST/_recovery?pretty
重点看:bytes_total 总分片、bytes_recovered 已同步、percent 进度
二、索引基础管理
1. 查看全部索引大小、文档数、副本配置
curl ES_HOST/_cat/indices?v
2. 查看单索引副本数(区分集群同步参数和副本配置)
curl ES_HOST/eiptest/_settings?flat_settings&pretty
关键字段 index.number_of_replicas:1=1 主 1 副本,2=1 主 2 副本
3. 修改索引副本数(同步完成后再执行)
# 改成1主2副本(三台机器各存一份完整数据)
curl -XPUT ES_HOST/eiptest/_settings -H "Content-Type:application/json" -d'
{
"number_of_replicas": 2
}'
4. 新建索引指定分片副本
curl -XPUT ES_HOST/log-202607 -H "Content-Type:application/json" -d'
{
"settings":{
"number_of_shards":1,
"number_of_replicas":1
}
}'
5. 删除过期索引(谨慎)
curl -XDELETE ES_HOST/log-202601
三、分片同步 / 恢复控制(你当前在用核心模块)
1. 调低同步限速、单节点仅 1 个同步任务(超大分片防 IO 打满)
curl -XPUT ES_HOST/_cluster/settings -H "Content-Type:application/json" -d'
{
"persistent": {
"cluster.routing.allocation.node_concurrent_recoveries": 1,
"indices.recovery.max_bytes_per_sec": "20mb"
}
}'
2. 同步完成后恢复默认不限速
curl -XPUT ES_HOST/_cluster/settings -H "Content-Type:application/json" -d'
{
"persistent": {
"cluster.routing.allocation.node_concurrent_recoveries": null,
"indices.recovery.max_bytes_per_sec": null
}
}'
3. 重置失败分片,重新尝试分配
curl -XPOST ES_HOST/_cluster/reroute?retry_failed=true
4. 手动强制分配副本(修复 UNASSIGNED 分片)
curl -XPOST ES_HOST/_cluster/reroute -H "Content-Type:application/json" -d'
{
"commands": [
{
"allocate_replica": {
"index": "eiptest",
"shard": 0,
"node": "ehV_EmwmQIGEz7kYbaxYsw"
}
}
]
}'
5. 临时关闭分片自动平衡(业务高峰防 IO 冲击)
curl -XPUT ES_HOST/_cluster/settings -H "Content-Type:application/json" -d'
{
"transient": {
"cluster.routing.allocation.enable": "none"
}
}'
# 恢复自动平衡
curl -XPUT ES_HOST/_cluster/settings -H "Content-Type:application/json" -d'
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}'
四、数据清理 & 磁盘释放(生产慎用,同步期间禁止)
1. 按条件批量删除旧数据(scroll 延长超时防上下文丢失)
curl -XPOST ES_HOST/eiptest/_delete_by_query?scroll=10m&requests_per_second=100 -H "Content-Type:application/json" -d'
{
"query": {
"range": {
"time": {
"lte": "2026-01-01"
}
}
}
}'
scroll=10m:延长查询快照存活时间requests_per_second=100:限速,避免磁盘 IO 打爆
2. 删除后强制合并段文件,真正释放磁盘(低峰执行)
curl -XPOST ES_HOST/eiptest/_forcemerge?max_num_segments=1
⚠️ IO 消耗极大,副本同步中绝对不能执行
3. 查看删除任务状态、终止卡住的删除任务
# 查看所有任务
curl ES_HOST/_tasks?pretty
# 终止任务(替换task_id)
curl -XPOST ES_HOST/_tasks/-erF9CAzRU-byFTGenYvqA:6708210/_cancel
五、故障排查常用命令
1. 查看分片未分配的详细原因(锁超时 / 磁盘满 / 节点离线)
curl ES_HOST/_cluster/allocation/explain?pretty
2. 查看节点热点线程(CPU/IO 高负载定位)
curl ES_HOST/_nodes/hot_threads
3. 清空索引缓存(查询异常、内存高时)
curl -XPOST ES_HOST/eiptest/_cache/clear
4. 延迟分片自动恢复(节点短暂重启,避免全量重同步)
curl -XPUT ES_HOST/_all/_settings -H "Content-Type:application/json" -d'
{
"index.unassigned.node_left.delayed_timeout": "5m"
}'
六、生产运维红线规则(避坑重点,适配你的 500G 单分片)
- 单分片不要超过 100G,500G 超大分片极易同步失败、故障恢复极慢,建议按天分拆索引
- 副本处于
INITIALIZING同步阶段:禁止批量删除、forcemerge、重启节点,会从头重传几百 G - 集群
yellow(仅副本丢失):优先低速同步副本,不要直接删数据(当前只有单份主分片,丢数据无法恢复) - 磁盘使用率超 85% 会触发 ES 只读保护,定期清理旧索引 / 过期数据
- 3 节点集群标准配置:副本数 = 1 或 2,1 主 2 副本实现三节点完整容灾
persistent参数永久生效,集群重启不丢失;transient临时生效,重启重置
七、日常运维流程模板
- 早间巡检:
_cluster/health+_cat/shards,确认无 UNASSIGNED 分片 - 磁盘告警:低峰执行
_delete_by_query删除过期数据,再_forcemerge释放空间 - 副本同步失败:调低 recovery 限速 20mb/s、单节点并发 1,手动 allocate_replica 重建副本
- 业务高峰:关闭分片自动 balance,避免同步抢占业务 IO
- 月度优化:拆分超大索引,控制单分片 30-80G,降低后续同步故障概率