本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
亞馬遜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 範本欄位
建立 ISM 政策。
開始使用索引狀態管理
-
在以下位置打開亞馬遜OpenSearch服務控制台 https://console.aws.amazon.com/aos/home
。 -
選取您要為其建立 ISM 政策的網域。
-
從網域的儀表板導覽至OpenSearch儀表板 URL,然後使用您的主要使用者名稱和密碼登入。URL 遵循以下格式:
domain-endpoint
/_dashboards/ -
開啟OpenSearch儀表板內的左側導覽面板,然後選擇索引管理,然後選擇建立原則。
-
使用視覺化編輯器
或 JSON 編輯器 來建立政策。我們推薦使用視覺化編輯器,因為它提供一種更加結構化的政策定義方式。如需建立政策的協助,請參閱下方的範例政策。 -
建立政策之後,請將其連接到一或多個索引:
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_migration
cold_migration
、、和cold_delete
:即使其中一個動作沒有在設定的逾時期限
內完成,仍會繼續遷移至熱索引。針對上述其中一個動作設定一個 error_notification ,如果動作未在逾時期限內完成,會通知您該動作失敗,但該通知僅供您自己參考。實際操作沒有固有的逾時,會在最終成功或失敗之前持續執行。 -
如果您的網域執行OpenSearch或彈性搜尋 7.4 或更新版本,則OpenSearch服務支援 ISM
open
和close
作業。
-
如果您的網域執行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
-