迁移编辑

允许的阶段:warm,cold。

通过更新 index.routing.allocation.include._tier_preference 索引设置,将索引移动到与当前阶段相对应的 数据层。ILM 会在 warm 和 cold 阶段自动注入迁移操作。要阻止自动迁移,可以显式包含迁移操作并将 enabled 选项设置为 false

如果 cold 阶段定义了 可搜索快照操作,则 migrate 操作不会在 cold 阶段自动注入,因为托管索引将使用与 migrate 操作配置相同的 _tier_preference 基础设施直接挂载到目标层。

在 warm 阶段,migrate 操作将 index.routing.allocation.include._tier_preference 设置为 data_warm,data_hot。这会将索引移动到 warm 层 中的节点。如果 warm 层中没有节点,它将回退到 hot 层

在 cold 阶段,migrate 操作将 index.routing.allocation.include._tier_preference 设置为 data_cold,data_warm,data_hot。这会将索引移动到 cold 层 中的节点。如果 cold 层中没有节点,它将回退到 warm 层,或者如果 warm 节点不可用,则回退到 hot 层。

在 frozen 阶段不允许使用迁移操作。frozen 阶段使用 index.routing.allocation.include._tier_preferencedata_frozen 直接挂载可搜索快照。这会将索引移动到 frozen 层 中的节点。

在 hot 阶段不允许使用迁移操作。初始索引分配 自动 执行,并且可以通过手动或通过 索引模板 进行配置。

选项编辑

enabled
(可选,布尔值) 控制 ILM 是否在此阶段自动迁移索引。默认为 true

示例编辑

在以下策略中,指定了 分配 操作以减少副本数量,然后 ILM 将索引迁移到 warm 节点。

显式指定迁移操作不是必需的 - ILM 会自动执行迁移操作,除非您禁用迁移。

response = client.ilm.put_lifecycle(
  policy: 'my_policy',
  body: {
    policy: {
      phases: {
        warm: {
          actions: {
            migrate: {},
            allocate: {
              number_of_replicas: 1
            }
          }
        }
      }
    }
  }
)
puts response
PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "migrate" : {
          },
          "allocate": {
            "number_of_replicas": 1
          }
        }
      }
    }
  }
}

禁用自动迁移编辑

以下策略中的迁移操作被禁用,分配操作将索引分配到具有 rack_id 为 *one* 或 *two* 的节点。

response = client.ilm.put_lifecycle(
  policy: 'my_policy',
  body: {
    policy: {
      phases: {
        warm: {
          actions: {
            migrate: {
              enabled: false
            },
            allocate: {
              include: {
                rack_id: 'one,two'
              }
            }
          }
        }
      }
    }
  }
)
puts response
PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "migrate" : {
           "enabled": false
          },
          "allocate": {
            "include" : {
              "rack_id": "one,two"
            }
          }
        }
      }
    }
  }
}