迁移
编辑迁移
编辑允许的阶段: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_frozen
的 index.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 } } } } } }
禁用自动迁移
编辑以下策略中的迁移操作被禁用,分配操作将索引分配给具有 one 或 two 的 rack_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" } } } } } } }