You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Elasticsearch 7.9.1-1自动rollover后如何让别名仅指向新索引读写?

实现ILM Rollover后别名仅指向新索引的方案

当然可以实现这个需求!默认情况下,ILM的rollover操作只会把写入索引切换到新生成的索引,但会保留旧索引在目标别名中(方便跨索引搜索)——不过咱们可以通过调整ILM策略的动作,让rollover完成后自动把旧索引从test-read_n_write别名中移除,这样这个别名就只指向新索引,同时保持读写能力。

具体修改步骤

你只需要更新现有的test-policy策略,在hot阶段的rollover动作之后,添加一个remove别名的动作,让ILM自动移除旧索引的别名关联:

PUT _ilm/policy/test-policy {
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age": "2d"
          },
          "remove": {
            "aliases": ["test-read_n_write"]
          }
        }
      }
    }
  }
}

动作逻辑说明

当rollover触发时,ILM会按以下顺序执行操作:

  1. 自动创建新的索引(比如test-000002),并将test-read_n_write别名的is_write_index属性切换到这个新索引上。
  2. 执行remove动作,将触发rollover的旧索引(也就是test-000001)从test-read_n_write别名中移除。

完成后,test-read_n_write别名就只会指向新生成的test-000002索引,同时它依然是该索引的写入别名,完全支持读写操作。

注意事项

  • 这个修改对已存在的test-000001索引不会立即生效,只会在下次rollover触发时执行别名移除操作。
  • 如果后续需要访问历史数据(比如test-000001),你可以直接通过索引名访问,或者单独创建一个只读别名来管理所有历史索引。
  • 你的Elasticsearch 7.9.1版本完全支持remove这个ILM动作,不需要担心版本兼容性问题。

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

火山引擎 最新活动