如何使用索引狀態管理 (ISM) 來管理 Amazon OpenSearch Service 中的低儲存空間?

上次更新日期:2021 年 9 月 16 日

我的 Amazon OpenSearch Service 叢集儲存空間過低。如何使用 OpenSearch Service 中的索引狀態管理 (ISM) 管理儲存空間問題?

簡短描述

索引狀態管理 (ISM) 允許您將例行任務自動化,然後將它們應用到 OpenSearch Service 中的索引和索引模式。透過 ISM,您可以定義自訂管理政策,協助維護磁碟空間不足等問題。例如,您可以使用 rollover 操作和 ISM 政策,根據索引大小等條件自動刪除舊索引。當現有索引符合定義的條件時,rollover 操作會將目標變換至新索引。

若要使用 rollover 之類的操作建立索引模式的 ISM 政策,請執行下列步驟:

1.    設定您的變換索引。

2.    建立 ISM 政策。

3.    將政策附加至索引。

4.    新增範本。

將政策連接至索引後,索引會開始初始化,然後轉換為不同狀態,直到 rollover 操作完成為止。有關 rollover 操作如需更多資訊,請參閱 OpenDistro for Elasticsearch 網站的 Rollover (變換)。

解決方案

設定您的變換索引

建立索引格式與索引模式相符的索引和別名:

^.*-\d+$.

重要:請務必正確設定您的變換別名。否則,您會收到錯誤訊息。

在下列範例中,會建立 “test-index-000001” 並填入數個文件。由於此範例使用變換索引,因此索引格式必須符合該模式。

PUT test-index-000001/_doc/1
{
    "user" : "testuser",
    "post_date" : "2020-05-08T14:12:12",
    "message" : "ISM testing"
}

變換索引需要指向最新索引的別名。這意味著您必須使用以下查詢建立一個別名 ("test-index"):

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test-index-000001", "alias" : "test-index" } }
    ]
}

建立 ISM 政策

在 OpenSearch Dashboards 中,選擇 Index Management (索引管理) 標籤,為 rollover 操作建立 ISM 政策。

例如:

{
    "policy": {
        "policy_id": "Roll_over_policy",
        "description": "A test policy. DO NOT USE FOR PRODUCTION!",
        "schema_version": 1,
        "error_notification": null,
        "default_state": "hot",
        "states": [
            {
                "name": "hot",
                "actions": [
                    {
                        "rollover": {
                            "min_size": "10mb"
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "warm"
                    }
                ]
            },
            {
                "name": "warm",
                "actions": [
                    {
                        "replica_count": {
                            "number_of_replicas": 2
                        }
                    }
                ],
                "transitions": []
            }
        ]
    }
}

在這個 ISM 政策中,有兩個已定義的狀態:"hot" (熱) 和 "warm" (暖)。 根據預設,您的索引處於 "hot" (熱) 狀態。索引一旦達到 10 MB 索引大小,就會轉換為 "warm" (暖) 狀態,並建立新的變換索引。在 "warm" (暖) 狀態下,您可以對索引執行各種動作,例如將複本計數變更為兩個,或執行 force_merge 操作。

將政策連接至索引

若要將 ISM 政策連接至索引,請執行下列步驟:

1.    從 OpenSearch Service 主控台開啟 OpenSearch Dashboards。

2.    選擇 Index Management (索引管理) 標籤。

3.    選取您要將 ISM 政策附加至的索引 (例如:"test-index-000001")。

4.    選擇 Apply policy (套用政策)。

5.    (選擇性) 如果您的政策指定任何需要別名的動作,請提供別名,然後選擇 Apply (套用)。您的索引會出現在受 Managed Indices (受管索引) 清單下。

新增範本

將政策連接至特定的索引,例如 "test-index-000002",這是作為 ISM 政策的結果所建立。此連接可確保在符合所需條件 (例如索引大小) 時,索引也會變換。

您可以使用像這樣的索引範本:

PUT _template/template_1
{
  "index_patterns": [
    "test-index*"
  ],
  "settings": {
    "index": {
      "opendistro": {
        "index_state_management": {
          "policy_id": "Roll_over_policy",
          "rollover_alias": "test-index"
        }
      }
    }
  }
}

在此範例中,JSON 政策 ID 是 "Roll_over_policy"。這個 JSON 範本可確保建立 "test-index-000002" 索引時,會附加變換政策:

GET test-index-000002/_settings
{
  "test-index-000002" : {
    "settings" : {
      "index" : {
        "opendistro" : {
          "index_state_management" : {
            "policy_id" : "Roll_over_policy",
            "rollover_alias" : "test-index"
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "test-index-000002",
        "creation_date" : "1589031424388",
        "number_of_replicas" : "2",
        "uuid" : "DUHeUdTnSveeYsH9aIkt-Q",
        "version" : {
          "created" : "7010199"
        }
      }
    }
  }
}

注意:此索引也會填入 OpenSearch Dashboard 中 Index Management (索引管理) 標籤的 Managed Indices (受管索引) 區段下方。

ISM 政策狀態

將 ISM 政策附加至索引時,索引會進入 "Initializing" (初始化) 狀態。從 "Initializing" (初始化) 狀態,索引會移至政策中定義的 "Default" (預設) 狀態。這個 "Initializing" 操作以及後續的每個操作可能需要 30 到 48 分鐘。ISM 會利用這段時間執行政策的動作,然後檢查是否有任何條件,並將索引轉換為不同狀態。也會加入 0-60% 的隨機抖動,以確保不會發生同時出自所有索引的活動激增。

注意:對於 rollover 操作,索引變換後會成為 "complete" (完成)、轉換成為 "warm" (暖) 狀態,並更新複本數量。

如果您使用 ISM 政策,但索引未正確遷移,請檢查 ISM 的狀態。

若要檢查特定索引的遷移狀態,請使用以下語法:

GET _ultrawarm/migration/<put_index_name_here>/_status

若要讓所有索引摘要遷移,請使用以下語法:

GET _ultrawarm/migration/_status?

Amazon OpenSearch Service 是 Amazon Elasticsearch Service 的後繼者。


此文章是否有幫助?


您是否需要帳單或技術支援?