インデックスは、データ層ノードの役割とインデックス割り当てフィルターを組み合わせてデータ層を移動します
Elasticsearchは、バージョン7.10でデータ層に対してホット-ウォーム-コールドアーキテクチャの実装を標準化しました。一部のインデックスやデプロイメントは、データ層に完全に移行していない可能性があり、ホット-ウォーム-コールドアーキテクチャの新しい実装方法とレガシーに基づくノード属性を混在させています。
これにより、未割り当てのシャードや、希望するtierに移行しないシャードが発生する可能性があります。
これを修正するためには、次の手順に従ってください:
シャードを割り当てるためには、データ層への移行ルーティングAPIを呼び出す必要があります。これにより、標準化されたデータ層を使用するための競合するルーティング構成が解決されます。必要に応じて、インデックステンプレートやILMポリシーを移行することで、システムの将来性も確保されます。
Kibanaを使用する
- 1. Elastic Cloudコンソールにログインします。
- 2. Elasticsearchサービスパネルで、デプロイメントの名前をクリックします。
デプロイメントの名前が無効になっている場合、Kibanaインスタンスが正常でない可能性があります。その場合は、Elasticサポートにお問い合わせください。デプロイメントにKibanaが含まれていない場合は、最初に有効にするだけで済みます。 - 3. デプロイメントのサイドナビゲーションメニュー(左上隅のElasticロゴの下に配置)を開き、**Dev Tools
Console**に移動します。
- 4. まず、インデックスライフサイクル管理を停止しましょう。
Python
resp = client.ilm.stop()
print(resp)
Ruby
response = client.ilm.stop
puts response
Js
const response = await client.ilm.stop();
console.log(response);
Console
POST /_ilm/stop
Console-Result
{
"acknowledged": true
}
- 5. インデックスライフサイクル管理が停止するのを待ちます。ステータスが
STOPPED
として返されるまで確認します:
Python
resp = client.ilm.get_status()
print(resp)
Ruby
response = client.ilm.get_status
puts response
Js
const response = await client.ilm.getStatus();
console.log(response);
Console
GET /_ilm/status
インデックスライフサイクル管理が正常に停止した場合、レスポンスは次のようになります:
Console-Result
{
"operation_mode": "STOPPED"
}
- 6. データ層に移行
Python
resp = client.ilm.migrate_to_data_tiers()
print(resp)
Ruby
response = client.ilm.migrate_to_data_tiers
puts response
Js
const response = await client.ilm.migrateToDataTiers();
console.log(response);
Console
POST /_ilm/migrate_to_data_tiers
Console-Result
{
"dry_run": false,
"migrated_ilm_policies":["policy_with_allocate_action"],
"migrated_indices":["warm-index-to-migrate-000001"],
"migrated_legacy_templates":["a-legacy-template"],
"migrated_composable_templates":["a-composable-template"],
"migrated_component_templates":["a-component-template"]
}
更新されたILMポリシー。 | |
ティアの優先度ルーティングに移行したインデックス。 | |
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたレガシーインデックステンプレート。 | |
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーザブルインデックステンプレート。 | |
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーネントテンプレート。 |
- 7. 再起動インデックスライフサイクル管理
Python
resp = client.ilm.start()
print(resp)
Ruby
response = client.ilm.start
puts response
Js
const response = await client.ilm.start();
console.log(response);
Console
POST /_ilm/start
Console-Result
{
"acknowledged": true
}
シャードを割り当てるためには、デプロイメントがデータ層ノードの役割を使用していることを確認し、データ層への移行ルーティングAPIを呼び出す必要があります。これにより、標準化されたデータ層を使用するための競合するルーティング構成が解決されます。必要に応じて、インデックステンプレートやILMポリシーを移行することで、システムの将来性も確保されます。
- 1. デプロイメントがまだデータ層を使用していない場合は、適切なデータ層にデータノードを割り当てる必要があります。各データノードに適切な役割を設定して、1つ以上のデータ層に割り当てます:
data_hot
、data_content
、data_warm
、data_cold
、またはdata_frozen
。たとえば、次の設定は、ノードをホットおよびコンテンツ層のデータ専用ノードとして構成します。
Yaml
node.roles [ data_hot, data_content ]
- 2. 停止インデックスライフサイクル管理
Python
resp = client.ilm.stop()
print(resp)
Ruby
response = client.ilm.stop
puts response
Js
const response = await client.ilm.stop();
console.log(response);
Console
POST /_ilm/stop
Console-Result
{
"acknowledged": true
}
- 3. インデックスライフサイクル管理が停止するのを待ちます。ステータスが
STOPPED
として返されるまで確認します:
Python
resp = client.ilm.get_status()
print(resp)
Ruby
response = client.ilm.get_status
puts response
Js
const response = await client.ilm.getStatus();
console.log(response);
Console
GET /_ilm/status
インデックスライフサイクル管理が正常に停止した場合、レスポンスは次のようになります:
Console-Result
{
"operation_mode": "STOPPED"
}
- 4. データ層に移行
Python
resp = client.ilm.migrate_to_data_tiers()
print(resp)
Ruby
response = client.ilm.migrate_to_data_tiers
puts response
Js
const response = await client.ilm.migrateToDataTiers();
console.log(response);
Console
POST /_ilm/migrate_to_data_tiers
Console-Result
{
"dry_run": false,
"migrated_ilm_policies":["policy_with_allocate_action"],
"migrated_indices":["warm-index-to-migrate-000001"],
"migrated_legacy_templates":["a-legacy-template"],
"migrated_composable_templates":["a-composable-template"],
"migrated_component_templates":["a-component-template"]
}
更新されたILMポリシー。 | |
ティアの優先度ルーティングに移行したインデックス。 | |
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたレガシーインデックステンプレート。 | |
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーザブルインデックステンプレート。 | |
提供されたデータ属性のカスタムルーティング設定を含まないように更新されたコンポーネントテンプレート。 |
- 5. 再起動インデックスライフサイクル管理
Python
resp = client.ilm.start()
print(resp)
Ruby
response = client.ilm.start
puts response
Js
const response = await client.ilm.start();
console.log(response);
Console
POST /_ilm/start
Console-Result
{
"acknowledged": true
}