すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:ノードにおけるホットデータの不均等な分散

最終更新日:Aug 23, 2026

一部のノードが他のノードよりも著しく多くのホットデータを処理すると、これらのノードは高負荷で動作し、クラスターの残りの部分はアイドル状態になります。本トピックでは、この不均衡を診断し、シャードを手動で移行して修正する方法について説明します。

症状

以下のいずれかの現象が見られる場合、この問題が発生している可能性があります:

  • 高負荷のノードが、同じ属性を持つシャード (例:プライマリシャードのみ) を偏って保持している

  • 高負荷のノードが、他のノードよりも多くのビジネスインデックス用シャードを保持している

事前準備

シャードの手動移行は一時的な解決策です。ノードが短時間クラスターから離脱し、シャードの再割り当てが実行されると、不均衡が再発する可能性があります。シャードを移行する前に、「クラスターの負荷の不均衡」のガイダンスに従って根本原因に対処してください。

シャードがすでに均等に分散されているにもかかわらず、クラスターが高負荷の場合は、代わりに クラスター設定のアップグレード を行ってください。

シャードの手動移行

ステップ 1:シャードの割り当ての無効化

次のコマンドを実行して、一時的にシャードの割り当てを無効にします。これにより、 Elasticsearch がシャードを自動的に移動するのを防ぎます。

PUT /_cluster/settings
{
  "transient" : {
     "cluster.routing.allocation.enable" : "none"
  }
}
重要

移行が完了したら (ステップ 4) 、シャードの割り当てを再度有効にしてください。シャードの割り当てを無効にしたままにすると、クラスターの復旧と回復性に影響を与える可能性があります。

ステップ 2:シャードの移行

クラスターの再ルーティング API を使用して、特定のシャードをあるノードから別のノードに移動します。次の例では、index_parkingorder_v1 インデックスのシャード 3 を 192.168.130.77 から 192.168.130.78 に移動します。

POST /_cluster/reroute
{
 "commands" : [
  {
   "move" : {
    "index" : "index_parkingorder_v1",
    "shard" : 3,
    "from_node" : "192.168.130.77",
    "to_node" : "192.168.130.78"
   }
  }
 ]
}

制約:ターゲットノードには、同じシーケンス番号を持つ同じインデックスのシャードがすでに存在していてはなりません。たとえば、あるインデックスのレプリカシャード 3 がノード A にある場合、そのインデックスのプライマリシャード 3 をノード A に移行することはできません。

再ルーティング API の詳細については、「cluster-reroute」をご参照ください。

ステップ 3:移行の検証

次のコマンドを実行して、現在のシャードの割り当てを確認します:

GET _cat/shards?v

出力には、各シャードの状態と割り当てられているノードが一覧表示されます。出力から移行したシャードを探し、以下を確認してください:

  • ターゲットノードに表示されていること

  • 状態が STARTED であること

以下は出力例です:

index        shard prirep state       docs    store   ip     node
qosgeoname   4     r      STARTED     2279054 623.8mb 10.6.xxx y3m8a_2
qosgeoname   4     p      STARTED     2279054 628.8mb 10.6.xxx Xwhpjaf
qosgeoname   3     r      RELOCATING  2279002 627.3mb 10.6.xxx 4Mh39az -> 10.6.xxx y3m8a_2tTdi_16TAy7B91w y3m8a_2
qosgeoname   3     p      STARTED     2279002 626.4mb 10.6.xxx Xwhpjaf
qosgeoname   1     r      STARTED     2278983 623.3mb 10.6.xxx I8SRFdj
qosgeoname   1     p      STARTED     2278983 621.6mb 10.6.xxx Qn3qSgY
qosgeoname   2     p      STARTED     2280694  623mb  10.6.xxx Qn3qSgY
qosgeoname   2     r      STARTED     2280694 622.7mb 10.6.xxx 4Mh39az
qosgeoname   0     p      STARTED     2278770         10.6.xxx I8SRFdj
qosgeoname   0     r      STARTED     2278770 624.3mb 10.6.xxx y3m8a_2

ステップ 4:シャードの割り当ての再有効化

移行を確認した後、シャードの割り当てを再度有効にしてください:

PUT /_cluster/settings
{
 "transient" : {
  "cluster.routing.allocation.enable" : "all"
 }
}

次のステップ