为使用 ILM(Index Lifecycle Management)管理索引,必须在 index.lifecycle.name 索引设置中指定有效的策略。

为给滚动索引(rolling indices)配置生命周期策略,需要创建策略,并且将其添加到索引模版(index template)。

为使用策略管理不滚动的索引,当创建索引时,可以指定声明周期策略,或者将策略直接应用到已存在的索引。

ILM 策略被存储在全局集群状态中,如果将 include_global_state 设置为 true,那么在创建快照时,它们将被包含在快照中。当恢复快照时,将恢复全局状态中的所有策略,同名的本地策略将被重写。

重要

为 Beats 或 Logstash Elasticsearch 输出插件启用索引生命周期管理时,将自动地应用必要的策略和配置变更。你可以修改默认策略,但不需要显式地配置策略或引导初始索引。


1. 创建生命周期策略

为从 Kibana 创建生命周期策略,打开菜单,进入 Stack Management > Index Lifecycle Policies,点击 Create policy

create-policy.png

为策略指定生命周期阶段,以及指定在每个阶段执行的操作。

向 Elasticsearch 集群添加策略将调用创建或更新策略(create or update policy)API。

API 示例:

在上面的例子中:

  1. 当索引大小达到 25GB 时,滚动它
  2. 滚转后 30 天删除索引

2. 通过索引模版应用生命周期策略

为使用触发滚动操作的策略,需要在用于创建新索引的索引模版中配置策略。指定策略名称,以及用于引用滚动索引的别名。

可以使用 Kibana Create template wizard 创建模版。为访问 wizard,打开菜单,进入 Stack Management > Index Management。在 Index Templates 选项卡中,点击 Create template

create-template-wizard-my_template.png

Wizard 调用创建或更新索引模版 API(create or update index template API)向集群添加模版。

API 示例:

在上面的例子中:

  1. 为所有名称以 test- 开头的新索引使用该模版
  2. my_policy 应用到使用该模版创建的新索引
  3. 定义用于引用被 my_policy 管理的索引的别名

2.1. 创建初始的受管理索引

当为滚动索引设置策略时,需要手动地创建第一个受策略管理的索引,并且将其指定为写索引。

重要

为 Beats 或 Logstash Elasticsearch 输出插件启用索引生命周期管理时,将自动地应用必要的策略和配置变更。你可以修改默认策略,但不需要显式地配置策略或引导初始索引。

索引名称必须匹配索引模版中定义的模式,并且以数字结尾。将递增此数字,以生成由滚动操作创建的索引的名称。

比如,下面的请求创建 test-00001 索引。因为它匹配 my_template 中指定的索引模式,Elasticsearch 自动地应用来自该模版的配置。

在上面的例子中:

  1. 将该初始索引设置为用于该别名的写索引

现在可以开始索引数据,滚动生命周期策略中指定的别名。使用样例 my_policy 策略,当初始索引达到 25GB 时,将触发滚动操作。然后,ILM 创建新索引,它将成为用于 test-alias 的写索引。


3. 手动地应用生命周期策略

可以在创建索引时指定策略,或通过 Kibana Management 或更新索引设置 API(update settings API)将策略应用到已存在的索引。应用策略时,ILM 立即开始管理索引。

重要

不能手动地应用使用滚动操作的策略。必须通过索引模版(index template)应用使用滚动的策略。否则,当滚动操作创建新索引时,该策略不会继续执行。

index.lifecycle.name 指定索引的策略。

API 示例:

在该示例中:

  1. 为索引设置生命周期策略

3.1. 将策略应用到多个索引

调用更新设置(update settings)API 时,可以通过在索引名称中使用通配符的方式,将相同的策略应用到多个索引。

警告

注意不要无意中匹配不想修改的索引。

在上面的示例中:

  1. 更新所有名称以 mylogs-pre-ilm 开始的索引

3.2. 切换生命周期策略

为切换索引的生命周期策略,请遵循以下步骤:

  1. 使用移除策略 API(remove policy API)移除现有的策略。以数据流或别名为目标,移除其全部索引的策略。

  2. 移除策略 API 从索引中移除全部 ILM 元数据,并且不考虑索引的生命周期状态。这可能使索引处于非预期状态。

    比如,forcemerge 操作在重新打开索引前,临时地关闭索引。在 forcemerge 期间,移除索引的 ILM 策略可能使其无限期地处于关闭状态。

    在策略移除后,使用获取索引 API(get index API)检查索引的状态。以数据流或别名为目标,获取其全部索引的状态。

    然后可以按需改变索引。比如,可以使用打开索引 API(open index API)重新打开任意已关闭的索引。

  3. 使用更新设置 API(update settings API)指定新策略。以数据流或别名为目标,为其全部索引指定策略。

    警告

    在移除现有策略前,不要指定新策略。这样做可能导致阶段执行(phase execution)静默失败。


参考文档