在 Amazon Elasticsearch Service 中为状态管理索引 - Amazon Elasticsearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon Elasticsearch Service 中为状态管理索引

通过索引状态管理 (ISM),您可以定义自定义管理策略来自动执行日常任务,并将其应用于 Amazon Elasticsearch Service (Amazon ES) 中的索引和索引模式。您不再需要设置和管理外部进程来运行索引操作。

策略包含一个默认状态和一个状态列表,以供索引在这些状态之间转换。在每个状态中,您可以定义要执行的一系列操作和触发这些转换的条件。典型的使用案例是在一段时间后定期删除旧索引。例如,您可以定义一个策略以在 30 天后将索引移入 read_only 状态,然后在 90 天后最终将其删除。

将策略附加到索引后,ISM 会创建一个每 30 到 48 分钟运行一次的作业,以执行策略操作、检查条件并将索引转换为不同的状态。该作业运行的基本时间是每 30 分钟一次,外加 0-60% 的随机抖动,以确保您不会同时看到来自所有索引的活动突增。

ISM 需要使用弹性搜索 6.8 或更高版本。相应的完整文档请查看 Open Distro for Elasticsearch 文档

重要

这些区域有:policy_id设置已不建议使用。您不能再使用索引模板将 ISM 策略应用于新创建的索引。您可以继续使用ISM 模板字段. 此更新引入了使用此设置影响现有 CloudFormation 模板的重大更改。

创建 ISM 策略

若要开始使用 ISM,请选择索引管理从 Kibana 主菜单中选择创建策略.

创建策略后,下一步是将其附加到一个或多个索引:

POST _opendistro/_ism/add/my-index { "policy_id": "my-policy-id" }

或者,在 Kibana 中选择索引,然后选择Apply Policy.

示例策略

以下示例策略演示了如何自动执行常见 ISM 使用案例。

从热到温到冷储存

此示例策略将索引从热存储移动到UltraWarm,并最终冷存储,然后删除索引。

索引最初位于hot状态。十天后,ISM 将其移到 添加到warm状态。80 天后,它将索引移动到cold状态。一年后,该服务向 Amazon Chime 空间发送通知以告知该索引正在被删除,然后永久删除该索引。

请注意,冷指数需要cold_delete操作而不是正常deleteoperation. 另请注意,显式timestamp_field是必需的,以便使用 ISM 管理冷指数。

{ "policy": { "description": "Demonstrate a hot-warm-cold-delete workflow.", "default_state": "hot", "schema_version": 1, "states": [{ "name": "hot", "actions": [], "transitions": [{ "state_name": "warm", "conditions": { "min_index_age": "10d" } }] }, { "name": "warm", "actions": [{ "warm_migration": {}, "retry": { "count": 5, "delay": "1h" } }], "transitions": [{ "state_name": "cold", "conditions": { "min_index_age": "90d" } }] }, { "name": "cold", "actions": [{ "cold_migration": { "timestamp_field": "@timestamp" } } ], "transitions": [{ "state_name": "delete", "conditions": { "min_index_age": "365d" } }] }, { "name": "delete", "actions": [{ "notification": { "destination": { "chime": { "url": "<URL>" } }, "message_template": { "source": "The index {{ctx.index}} is being deleted." } } }, { "cold_delete": {} }] } ] } }

减少复制副本计数

此示例策略在七天后将副本计数减少到零以节省磁盘空间,然后在 21 天后删除索引。此策略假定索引是非关键索引,并不再接收写入请求。副本数量为零会带来一定的数据丢失风险。

{ "policy": { "description": "Changes replica count and deletes.", "schema_version": 1, "default_state": "current", "states": [{ "name": "current", "actions": [], "transitions": [{ "state_name": "old", "conditions": { "min_index_age": "7d" } }] }, { "name": "old", "actions": [{ "replica_count": { "number_of_replicas": 0 } }], "transitions": [{ "state_name": "delete", "conditions": { "min_index_age": "21d" } }] }, { "name": "delete", "actions": [{ "delete": {} }], "transitions": [] } ] } }

拍摄索引快照

此示例策略使用snapshot操作,以便在索引包含至少一个文档时立即拍摄该索引的快照。repository是您在 Amazon S3 中注册的手动快照存储库的名称。snapshot是快照的名称。有关注册存储库的快照先决条件和步骤,请参阅在 Amazon Elasticsearch Service 中创建索引快照.

{ "policy": { "description": "Takes an index snapshot.", "schema_version": 1, "default_state": "empty", "states": [{ "name": "empty", "actions": [], "transitions": [{ "state_name": "occupied", "conditions": { "min_doc_count": 1 } }] }, { "name": "occupied", "actions": [{ "snapshot": { "repository": "<my-repository>", "snapshot": "<my-snapshot>" } }], "transitions": [] } ] } }

ISM 模板

您可以设置ism_template字段,因此当您创建与模板模式匹配的索引时,策略会自动附加到该索引。在此示例中,以 “log” 开头的名称创建的任何索引都会自动匹配 ISM 策略my-policy-id

PUT _opendistro/_ism/policies/my-policy-id { "policy": { "description": "Example policy.", "default_state": "...", "states": [...], "ism_template": { "index_patterns": ["log*"], "priority": 100 } } }

若要获取更详细的示例,请参阅具有 ISM 模板的策略示例.

Differences

与 Elasticsearch Service 相比,ISM 面向 Amazon Elasticsearch Service 有几个区别。

ISM 操作

  • 亚马逊 ES 支持三种独特的 ISM 操作,warm_migrationcold_migration, 和cold_delete.

    如果您的域UltraWarm启用时,warm_migration操作会将索引转换为温存储。即使warm_migration操作未能在设置超时时间,向温暖指数的迁移仍在继续。

    设置error_notifcation(对于 )warm_migration操作可能会通知您warm_migration操作如果未在超时期间内完成,则会失败。此失败的通知仅供您自己参考。实际的热迁移操作没有固有的超时时间,并将继续运行,直到最终成功或失败。

  • 如果您的域运行弹性搜索 7.4 或更高版本,则亚马逊 ES 支持 ISMopenclose操作。

  • 如果您的域运行弹性搜索 7.7 或更高版本,则亚马逊 ES 支持 ISMsnapshotoperation.

ISM 设置

Open Distro for Elasticsearch 让您可以使用 _cluster/settings API 更改所有可用的 ISM 设置。在 Amazon ES 上,您只能更改以下设置:

  • 集群级别设置:

    • enabled

    • history.enabled

  • 索引级别设置:

    • rollover_alias