一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • ElasticSearch運用後にプライマリシャードを増やす方法

前回に続いてElasticSearchの記事です。

ESは一度インデックスを作成してしまうと、プライマリシャードの割当数は増やすことができません。

しかし運用後にパフォーマンスの向上等の理由でシャードを増やしたいケースが出てくることがあります。

本来はそれを見据えて、将来的なノード数を考慮したうえでプライマリシャードを設定しておくというのは良いプラクティスと言えるのですが、

ただしそれをやっていなかったとしても、まだ方法はあります。

今回はその方法についてメモを残しておきます。

再インデックスをする

再インデックスとは既存のインデックスのデータを別のインデックスにコピーする方法です。

「別のインデックス」の方に、新たなプライマリシャードを割り当てておいて、再インデックスをする。

こうすることで、プライマリシャードを増やすことが可能になります。

再インデックスはいつもの通りPOSTメソッドでコマンド一発ですぐできます。

エイリアスを設定して参照先を切り替える

個人的には再インデックスよりこちらの方法が良いと思っています。

既存のインデックスにあらかじめエイリアスを設定しておきます。

ここで、index_Aのaliasをalias_index_dataと仮定します。

アプリケーション側からはalias_index_dataに向けてリクエストを行っている状態です。

この状態で理想のプライマリシャードを設定したindex_Bを作成します。

その後index_A, index_Bのデータを同期させます。

最後にaliasを切り替えます。

今までalias_index_data ⇒ index_A だったので

alias_index_data ⇒ index_B と切り替えてあげれば終了です。

このaliasを設定する方法だと、切り替えの瞬間しか本番環境に影響を及ぼさないので、

個人的にはこちらの方が良いと思っています。

The following two tabs change content below.

小林 聡太

Webエンジニアしてます。2020年に独立しました。 技術的なことから個人事業主として必要なことまで色々お話しします。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア