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

如何定义ISM/ILM策略,确保仅在全部条件满足时执行Rollover动作?

解决ISM策略中Rollover动作需满足全部条件才触发的配置方法

问题原因

你当前配置的rollover动作中,min_index_age和min_doc_count是逻辑或的关系——只要满足其中一个条件,Rollover就会执行,这就是为什么文档数为0但索引年龄达标后仍触发了操作。

正确配置方案

要实现所有条件同时满足才触发Rollover,需要把条件从rollover动作参数中移出,放到状态的transitions(状态过渡)里,通过状态流转来控制动作执行:

{
  "policy": {
    "description": "Rollover only when both conditions are met",
    "default_state": "wait",
    "states": [
      {
        "name": "wait",
        "actions": [],
        "transitions": [
          {
            "state": "rollover",
            "conditions": {
              "min_index_age": "1h",
              "min_doc_count": 1
            }
          }
        ]
      },
      {
        "name": "rollover",
        "actions": [
          {
            "rollover": {}
          }
        ],
        "transitions": []
      }
    ],
    "ism_template": {
      "index_patterns": ["log*"],
      "priority": 100
    }
  }
}

配置说明

  • 新增wait状态作为默认状态,该状态下不执行任何动作,仅等待条件满足
  • 在wait状态的transitions中定义必须同时满足的两个条件:min_index_age和min_doc_count,只有两者都达标时,才会过渡到rollover状态
  • rollover状态内的动作不再附带条件参数,只要进入该状态就执行Rollover操作

验证方法

配置完成后,可执行以下命令查看策略执行情况:

GET /_opendistro/_ism/explain/log-000001?pretty

只有当索引年龄≥1小时且文档数≥1时,才会触发Rollover动作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:07:49