加载中

更新或切换 Elasticsearch 索引生命周期策略

索引生命周期管理 (ILM) 可实现索引阶段和数据保留的自动化处理。您可以更新策略以修改索引在各阶段的推进方式,或者将索引切换到不同的策略以更改其生命周期管理。本页面介绍了如何使用 Kibana 或 Elasticsearch API 安全地应用这些更新。

为确保策略更新不会使索引进入无法退出当前阶段的状态,当索引进入某个阶段时,该阶段定义会被缓存到索引元数据中。如果可以安全地应用更改,ILM 会更新缓存的阶段定义。如果不能,则阶段执行将继续使用缓存的定义。

当索引推进到下一个阶段时,它将使用已更新策略中的阶段定义。

要配置一个当前未由 ILM 管理的索引使其受生命周期策略管辖,请参阅 将索引生命周期策略应用于现有的 Elasticsearch 索引

当策略最初应用于索引时,索引会获取该策略的最新版本。如果您更新策略,策略版本会增加,ILM 可以检测到索引正在使用需要更新的早期版本。

min_age 的更改不会传播到缓存的定义中。更改阶段的 min_age 不会影响当前正在执行该阶段的索引。

例如,如果您创建了一个不指定 min_age 的热阶段策略,当应用该策略时,索引会立即进入热阶段。如果您随后更新策略,为热阶段指定 1 天的 min_age,这对已经处于热阶段的索引没有影响。策略更新之后创建的索引,直到存在 1 天后才会进入热阶段。

当您将不同的策略应用于受管索引时,该索引会使用先前策略中的缓存定义完成当前阶段。当索引移动到下一个阶段时,它将开始使用新策略。

您可以更新当前与一个或多个索引关联的生命周期策略。

警告

避免更改 Elasticsearch 附带的任何受管策略,例如 logs@lifecyclemetrics@lifecycle。相反,请创建一个新的 自定义 ILM 策略 并将其与预期的索引模板或索引关联。

要更新生命周期策略

  1. 使用导航菜单或全局搜索字段转到 Index Lifecycle Policies 管理页面。

  2. 使用搜索工具找到您想要更新的生命周期策略。

    您可以取消选中“包含受管系统策略”(Include managed system policies) 选项以从列表中过滤掉受管策略,因为强烈建议不要更新这些策略。

  3. 检查“已关联索引模板”(Linked index templates) 和“已关联索引”(Linked indices) 列中的链接,以确认您的更新将仅应用于您想要使用新策略影响的模板或索引。

  4. 对于您想要更新的策略,请选择“操作”(Actions) 菜单中的 edit 图标。

    您还可以从“操作”(Actions) 菜单中选择将 ILM 策略添加到任何现有的索引模板。

  5. 在“编辑策略”(Edit policy) 页面上,根据需要启用任何 ILM 阶段,并展开“高级设置”(Advanced settings) 以调整为该阶段配置的 索引生命周期操作

使用 创建或更新策略 (Create or update policy) API 更新现有的 ILM 策略

				PUT _ilm/policy/my_policy
					{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_primary_shard_size": "25GB"
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
		
  1. 当索引的一个或多个分片达到 25GB 时,执行滚动操作。
  2. 滚动 30 天后删除索引。

指定的策略将被替换,且策略版本会增加。

您可以更改索引,使其由不同的 ILM 策略管理。

警告

当您移除 ILM 策略时,所有 ILM 元数据都会从受管索引中移除,而不考虑索引的生命周期状态。这可能会导致索引处于不理想的状态。

例如,在某些情况下,forcemerge 操作会在重新打开索引之前暂时关闭它。在 forcemerge 期间移除索引的 ILM 策略可能会导致索引保持关闭状态,直到手动重新打开为止。

要切换索引的生命周期策略

  1. 使用导航菜单或全局搜索字段转到 Index Management 页面。

  2. 在“索引”(Indices) 选项卡中,搜索并选择您想要切换到新策略的索引。您可以使用“生命周期状态”(Lifecycle status) 过滤器来缩小列表范围。

  3. 从“管理索引”(Manage index) 下拉菜单中,选择“移除生命周期策略”(Remove lifecycle policy)。在移除 ILM 策略之前确认您的选择。

  4. 从“管理索引”(Manage index) 下拉菜单中,选择“添加生命周期策略”(Add lifecycle policy),然后选择要应用的新策略。

使用 Elasticsearch 移除策略 (remove policy)更新设置 (update settings) API 来切换索引的生命周期策略

  1. 使用 移除策略 API (remove policy API) 移除现有策略。针对数据流或别名进行操作,以移除其所有索引的策略。

    				POST logs-my_app-default/_ilm/remove
    		
  2. 使用 获取索引 API (get index API) 检查索引的状态。针对数据流或别名进行操作,以获取其所有索引的状态。

    				GET logs-my_app-default
    		

    然后,您可以根据需要更改索引。例如,您可以使用 打开索引 API (open index API) 重新打开任何已关闭的索引。

    				POST logs-my_app-default/_open
    		
  3. 使用 更新设置 API (update settings API) 分配新策略。针对数据流或别名进行操作,以将其策略分配给其所有索引。

    警告
    				PUT logs-my_app-default/_settings
    					{
      "index": {
        "lifecycle": {
          "name": "new-lifecycle-policy"
        }
      }
    }
    		
© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.