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

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

Amazon 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 或更新版本。

注意

本文件提供 ISM 的簡要概觀以及數個範例政策。它也說明適用於 Amazon OpenSearch 服務網域的 ISM 與自我管理 OpenSearch叢集上的 ISM 有何不同。如需 ISM 的完整文件,包括完整的參數參考、每個設定的說明以及 API 參考,請參閱 OpenSearch 文件中的索引狀態管理

重要

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

建立 ISM 政策。

開始使用索引狀態管理
  1. 打開 Amazon 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 與彈性搜索相比,Amazon 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 設定。在 Amazon OpenSearch 服務上,您只能變更下列 ISM 設定

  • 叢集層級設定:

    • plugins.index_state_management.enabled

    • plugins.index_state_management.history.enabled

  • 索引層級設定:

    • plugins.index_state_management.rollover_alias