迁移

编辑

允许的阶段:warm(温)和 cold(冷)。

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

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

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

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

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

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

选项

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

示例

编辑

在以下策略中,指定了 allocate 操作,以便在 ILM 将索引迁移到温节点之前减少副本数量。

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

resp = client.ilm.put_lifecycle(
    name="my_policy",
    policy={
        "phases": {
            "warm": {
                "actions": {
                    "migrate": {},
                    "allocate": {
                        "number_of_replicas": 1
                    }
                }
            }
        }
    },
)
print(resp)
response = client.ilm.put_lifecycle(
  policy: 'my_policy',
  body: {
    policy: {
      phases: {
        warm: {
          actions: {
            migrate: {},
            allocate: {
              number_of_replicas: 1
            }
          }
        }
      }
    }
  }
)
puts response
const response = await client.ilm.putLifecycle({
  name: "my_policy",
  policy: {
    phases: {
      warm: {
        actions: {
          migrate: {},
          allocate: {
            number_of_replicas: 1,
          },
        },
      },
    },
  },
});
console.log(response);
PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "migrate" : {
          },
          "allocate": {
            "number_of_replicas": 1
          }
        }
      }
    }
  }
}

禁用自动迁移

编辑

以下策略中的迁移操作被禁用,分配操作将索引分配给具有 onetworack_id 的节点。

resp = client.ilm.put_lifecycle(
    name="my_policy",
    policy={
        "phases": {
            "warm": {
                "actions": {
                    "migrate": {
                        "enabled": False
                    },
                    "allocate": {
                        "include": {
                            "rack_id": "one,two"
                        }
                    }
                }
            }
        }
    },
)
print(resp)
response = client.ilm.put_lifecycle(
  policy: 'my_policy',
  body: {
    policy: {
      phases: {
        warm: {
          actions: {
            migrate: {
              enabled: false
            },
            allocate: {
              include: {
                rack_id: 'one,two'
              }
            }
          }
        }
      }
    }
  }
)
puts response
const response = await client.ilm.putLifecycle({
  name: "my_policy",
  policy: {
    phases: {
      warm: {
        actions: {
          migrate: {
            enabled: false,
          },
          allocate: {
            include: {
              rack_id: "one,two",
            },
          },
        },
      },
    },
  },
});
console.log(response);
PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "migrate" : {
           "enabled": false
          },
          "allocate": {
            "include" : {
              "rack_id": "one,two"
            }
          }
        }
      }
    }
  }
}