インデックスは、データ層ノードの役割とインデックス割り当てフィルターを組み合わせてデータ層を移動します

Elasticsearchは、バージョン7.10でデータ層に対してホット-ウォーム-コールドアーキテクチャの実装を標準化しました。一部のインデックスやデプロイメントは、データ層に完全に移行していない可能性があり、ホット-ウォーム-コールドアーキテクチャの新しい実装方法とレガシーに基づくノード属性を混在させています。

これにより、未割り当てのシャードや、希望するtierに移行しないシャードが発生する可能性があります。

これを修正するためには、次の手順に従ってください:

シャードを割り当てるためには、データ層への移行ルーティングAPIを呼び出す必要があります。これにより、標準化されたデータ層を使用するための競合するルーティング構成が解決されます。必要に応じて、インデックステンプレートやILMポリシーを移行することで、システムの将来性も確保されます。

Kibanaを使用する

  • 1. Elastic Cloudコンソールにログインします。
  • 2. Elasticsearchサービスパネルで、デプロイメントの名前をクリックします。
    デプロイメントの名前が無効になっている場合、Kibanaインスタンスが正常でない可能性があります。その場合は、Elasticサポートにお問い合わせください。デプロイメントにKibanaが含まれていない場合は、最初に有効にするだけで済みます。
  • 3. デプロイメントのサイドナビゲーションメニュー(左上隅のElasticロゴの下に配置)を開き、**Dev Tools

    Console**に移動します。
    Kibana Console

  • 4. まず、インデックスライフサイクル管理を停止しましょう。

Python

  1. resp = client.ilm.stop()
  2. print(resp)

Ruby

  1. response = client.ilm.stop
  2. puts response

Js

  1. const response = await client.ilm.stop();
  2. console.log(response);

Console

  1. POST /_ilm/stop

レスポンスは次のようになります:

Console-Result

  1. {
  2. "acknowledged": true
  3. }
  • 5. インデックスライフサイクル管理が停止するのを待ちます。ステータスがSTOPPEDとして返されるまで確認します:

Python

  1. resp = client.ilm.get_status()
  2. print(resp)

Ruby

  1. response = client.ilm.get_status
  2. puts response

Js

  1. const response = await client.ilm.getStatus();
  2. console.log(response);

Console

  1. GET /_ilm/status

インデックスライフサイクル管理が正常に停止した場合、レスポンスは次のようになります:

Console-Result

  1. {
  2. "operation_mode": "STOPPED"
  3. }

Python

  1. resp = client.ilm.migrate_to_data_tiers()
  2. print(resp)

Ruby

  1. response = client.ilm.migrate_to_data_tiers
  2. puts response

Js

  1. const response = await client.ilm.migrateToDataTiers();
  2. console.log(response);

Console

  1. POST /_ilm/migrate_to_data_tiers

レスポンスは次のようになります:

Console-Result

  1. {
  2. "dry_run": false,
  3. "migrated_ilm_policies":["policy_with_allocate_action"],
  4. "migrated_indices":["warm-index-to-migrate-000001"],
  5. "migrated_legacy_templates":["a-legacy-template"],
  6. "migrated_composable_templates":["a-composable-template"],
  7. "migrated_component_templates":["a-component-template"]
  8. }
更新されたILMポリシー。
ティアの優先度ルーティングに移行したインデックス。
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたレガシーインデックステンプレート。
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーザブルインデックステンプレート。
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーネントテンプレート。
  • 7. 再起動インデックスライフサイクル管理

Python

  1. resp = client.ilm.start()
  2. print(resp)

Ruby

  1. response = client.ilm.start
  2. puts response

Js

  1. const response = await client.ilm.start();
  2. console.log(response);

Console

  1. POST /_ilm/start

レスポンスは次のようになります:

Console-Result

  1. {
  2. "acknowledged": true
  3. }

シャードを割り当てるためには、デプロイメントがデータ層ノードの役割を使用していることを確認し、データ層への移行ルーティングAPIを呼び出す必要があります。これにより、標準化されたデータ層を使用するための競合するルーティング構成が解決されます。必要に応じて、インデックステンプレートやILMポリシーを移行することで、システムの将来性も確保されます。

  • 1. デプロイメントがまだデータ層を使用していない場合は、適切なデータ層にデータノードを割り当てる必要があります。各データノードに適切な役割を設定して、1つ以上のデータ層に割り当てます:data_hotdata_contentdata_warmdata_cold、またはdata_frozen。たとえば、次の設定は、ノードをホットおよびコンテンツ層のデータ専用ノードとして構成します。

Yaml

  1. node.roles [ data_hot, data_content ]
  • 2. 停止インデックスライフサイクル管理

Python

  1. resp = client.ilm.stop()
  2. print(resp)

Ruby

  1. response = client.ilm.stop
  2. puts response

Js

  1. const response = await client.ilm.stop();
  2. console.log(response);

Console

  1. POST /_ilm/stop

レスポンスは次のようになります:

Console-Result

  1. {
  2. "acknowledged": true
  3. }
  • 3. インデックスライフサイクル管理が停止するのを待ちます。ステータスがSTOPPEDとして返されるまで確認します:

Python

  1. resp = client.ilm.get_status()
  2. print(resp)

Ruby

  1. response = client.ilm.get_status
  2. puts response

Js

  1. const response = await client.ilm.getStatus();
  2. console.log(response);

Console

  1. GET /_ilm/status

インデックスライフサイクル管理が正常に停止した場合、レスポンスは次のようになります:

Console-Result

  1. {
  2. "operation_mode": "STOPPED"
  3. }

Python

  1. resp = client.ilm.migrate_to_data_tiers()
  2. print(resp)

Ruby

  1. response = client.ilm.migrate_to_data_tiers
  2. puts response

Js

  1. const response = await client.ilm.migrateToDataTiers();
  2. console.log(response);

Console

  1. POST /_ilm/migrate_to_data_tiers

レスポンスは次のようになります:

Console-Result

  1. {
  2. "dry_run": false,
  3. "migrated_ilm_policies":["policy_with_allocate_action"],
  4. "migrated_indices":["warm-index-to-migrate-000001"],
  5. "migrated_legacy_templates":["a-legacy-template"],
  6. "migrated_composable_templates":["a-composable-template"],
  7. "migrated_component_templates":["a-component-template"]
  8. }
更新されたILMポリシー。
ティアの優先度ルーティングに移行したインデックス。
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたレガシーインデックステンプレート。
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーザブルインデックステンプレート。
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーネントテンプレート。
  • 5. 再起動インデックスライフサイクル管理

Python

  1. resp = client.ilm.start()
  2. print(resp)

Ruby

  1. response = client.ilm.start
  2. puts response

Js

  1. const response = await client.ilm.start();
  2. console.log(response);

Console

  1. POST /_ilm/start

レスポンスは次のようになります:

Console-Result

  1. {
  2. "acknowledged": true
  3. }