亞馬遜OpenSearch服務中的索引狀態管理 - Amazon OpenSearch 服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

亞馬遜OpenSearch服務中的索引狀態管理

Amazon Ser OpenSearch vice 中的索引狀態管理 (ISM) 可讓您定義自動化例行任務的自訂管理政策,並將其套用至索引和索引模式。您不再需要設定和管理外部程序來執行索引操作。

政策包含預設狀態和狀態清單,供索引進行相互轉換。在每種狀態下,您可以定義要執行的操作清單和觸發這些轉換的條件。典型的使用案例是在一段時間後定期刪除舊的索引。例如,您可以定義一個政策,在 30 天後將索引移至 read_only 狀態,然後最終在 90 天後將索引刪除。

在您將政策連接至索引之後,ISM 會建立一個任務,每 5 至 8 分鐘 (或預先 1.3 個叢集為每 30 到 48 分鐘) 執行一次,以執行政策動作、檢查條件,然後將索引轉換為不同的狀態。執行此任務的基準時間是每 5 分鐘一次,再加上隨機的 0-60% 抖動,以確保您不會同時看到來自所有索引的活動突增。如果叢集狀態為紅色,ISM 就不會執行任務。

ISM 需要OpenSearch或彈性搜尋 6.8 或更新版本。完整的文檔可在OpenSearch文檔中找到。

重要

您無法再使用索引範本將 ISM 政策套用至新建立的索引。使用 ISM 範本欄位,您可以繼續自動管理新建立的索引。此更新引入了影響使用此設定的現有CloudFormation範本的突破性變更。

建立 ISM 政策。

開始使用索引狀態管理
  1. 在以下位置打開亞馬遜OpenSearch服務控制台 https://console.aws.amazon.com/aos/home

  2. 選取您要為其建立 ISM 政策的網域。

  3. 從網域的儀表板導覽至OpenSearch儀表板 URL,然後使用您的主要使用者名稱和密碼登入。URL 遵循以下格式:

    domain-endpoint/_dashboards/
  4. 開啟OpenSearch儀表板內的左側導覽面板,然後選擇索引管理,然後選擇建立原則

  5. 使用視覺化編輯器JSON 編輯器來建立政策。我們推薦使用視覺化編輯器,因為它提供一種更加結構化的政策定義方式。如需建立政策的協助,請參閱下方的範例政策

  6. 建立政策之後,請將其連接到一或多個索引:

    POST _plugins/_ism/add/my-index { "policy_id": "my-policy-id" }
    注意

    如果您的網域正在執行舊版 Elasticsearch 版本,請使用 _opendistro 而非 _plugins

    或者,在OpenSearch儀表板中選取索引,然後選擇套用原則

範例政策

下列範例政策示範如何自動化常見的 ISM 使用案例。

熱至暖再至冷儲存

此範例原則會將索引從熱儲存區移至 UltraWarm,最後移至 冷庫。然後,它會刪除索引。

該索引最初位於 hot 狀態。十天之後,ISM 將其移至 warm 狀態。80 天後,索引已經超過 90 天,ISM會將索引移至 cold 狀態。一年之後,服務會將通知傳送到正在刪除索引的 Amazon Chime 空間,然後永久將其刪除。

請注意,冷索引需要 cold_delete 操作,而不是正常的 delete 操作。另請注意,資料中必須有明確的 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": "<your timestamp field>" } } ], "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 是您在 Simple Storage Service (Amazon S3) 中註冊的手動快照儲存庫的名稱。snapshot 是快照的名稱。如需快照必要條件和註冊儲存庫的步驟,請參閱在 Amazon OpenSearch 服務中創建索引快照

{ "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 _plugins/_ism/policies/my-policy-id { "policy": { "description": "Example policy.", "default_state": "...", "states": [...], "ism_template": { "index_patterns": ["log*"], "priority": 100 } } }

如需更詳細的範例,請參閱使用 ISM 範本進行自動變換的範例政策

差異

OpenSearch與彈性搜索相比,適用於亞馬遜OpenSearch服務的 ISM 有幾個區別。

ISM 操作

  • OpenSearch服務支援三種獨特的 ISM 作業warm_migrationcold_migration、、和cold_delete

    • 如果您的網域已UltraWarm啟用,warm_migration動作會將索引轉換為暖儲存。

    • 如果您的網域啟用了冷儲存cold_migration 動作會將索引轉換為冷儲存,而 cold_delete 動作則會從冷存儲中刪除索引。

    即使其中一個動作沒有在設定的逾時期限內完成,仍會繼續遷移至熱索引。針對上述其中一個動作設定一個 error_notification,如果動作未在逾時期限內完成,會通知您該動作失敗,但該通知僅供您自己參考。實際操作沒有固有的逾時,會在最終成功或失敗之前持續執行。

  • 如果您的網域執行OpenSearch或彈性搜尋 7.4 或更新版本,則OpenSearch服務支援 ISM openclose作業。

  • 如果您的網域執行OpenSearch或彈性搜尋 7.7 或更新版本,則OpenSearch服務支援 ISM snapshot 作業。

冷儲存 ISM 操作

對於冷索引,當您使用下列 ISM API 時,必須指定 ?type=_cold 參數:

這些適用於冷索引的 API 具有以下其他不同之處:

  • 不支援萬用字元運算子,除非您在結尾處使用。例如,支援 _plugins/_ism/<add, remove, change_policy, retry, explain>/logstash-*|,但不支援 _plugins/_ism/<add, remove, change_policy, retry, explain>/iad-*-prod

  • 不支援多行索引名稱和模式。例如,支援 _plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs|,但不支援 _plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs,sample-data

ISM 設定

OpenSearch而彈性搜尋可讓您使用 API 變更所有可用的 _cluster/settings ISM 設定。在亞馬遜OpenSearch服務上,您只能變更下列 ISM 設定

  • 叢集層級設定:

    • plugins.index_state_management.enabled

    • plugins.index_state_management.history.enabled

  • 索引層級設定:

    • plugins.index_state_management.rollover_alias