You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch无需外部脚本按索引生命周期自动调整副本数的方法

解决方案

你可以直接使用Elasticsearch原生的**索引生命周期管理(ILM)**功能实现需求,无需依赖任何外部工具,操作步骤如下:

1. 创建ILM生命周期策略

先创建针对日志索引的ILM策略,配置不同生命周期阶段的副本数规则:

PUT _ilm/policy/logs_ilm_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "set_number_of_replicas": {
            "number_of_replicas": 1
          }
        }
      },
      "warm": {
        "min_age": "1d",
        "actions": {
          "set_number_of_replicas": {
            "number_of_replicas": 0
          }
        }
      }
    }
  }
}

该策略逻辑为:索引刚创建时处于hot阶段,保留1个副本保证数据可靠性;当索引创建时间满1天后自动进入warm阶段,将副本数调整为0节省存储空间。

2. 更新现有索引模板关联ILM策略

修改你已有的template_1索引模板,新增ILM策略绑定配置,后续所有新创建的logs*前缀索引会自动应用该策略:

PUT _index_template/template_1
{
  "index_patterns": ["logs*"],
  "template": {
    "settings": {
      "number_of_shards": 6,
      "number_of_replicas": 1,
      "index.lifecycle.name": "logs_ilm_policy"
    }
  }
}

3. 为存量日志索引批量应用策略

上述模板修改仅对后续新建的索引生效,已经存在的历史日志索引需要手动批量绑定ILM策略:

PUT logs*/_settings
{
  "index.lifecycle.name": "logs_ilm_policy"
}

绑定后ILM会自动识别每个存量索引的创建时间,符合1天以上要求的会自动调整副本数为0。

补充说明

ILM默认每10分钟检查一次所有索引的状态,判断是否满足阶段过渡条件,你也可以根据需求调整检查间隔,示例调整为5分钟检查一次:

PUT _cluster/settings
{
  "persistent": {
    "indices.lifecycle.poll_interval": "5m"
  }
}

内容的提问来源于stack exchange,提问作者noze_potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 19:15:03