Elasticsearch5系からElasticsearch6系へのアップグレードの概要

Elasticsearch5系からElasticsearch6系へのアップグレードの概要を記す。

公式のドキュメントUpgrading Elasticsearchを参考にした。 www.elastic.co

まずアップグレードする前に注意すること

  • アプリケーションに影響を与えそうな最新の変更をチェックする。
  • 非推奨機能を使用しているかどうかを確認する。(非推奨ログを確認)
  • カスタムプラグインを使用する場合は、アップグレードするバージョンが互換性のあるのか、使用可能であるのかを確認する。
  • 実際に動いてるクラスタをアップグレードする前に、develop環境でバージョンアップグレードをテストする。
  • アップグレードする前にデータをバックアップする。データのバックアップがない限り、以前のバージョンにロールバックすることはできない。

通常、Elasticsearchはローリングアップグレードを使用してアップグレードすることができるため、アップグレードによってサービスが中断されることはない。ただし、古いバージョンで作成されたインデックスをアップグレードするには、reindexを実行する必要がある。また、6.0より前のメジャーバージョン間のアップグレードでは、すべてのクラスタ再起動が必要である。

アップグレードする前のバージョン アップグレードする先のバージョン サポートされているアップグレードのタイプ
5.x 5.y ローリングアップグレード(x<y)
5.6 6.x ローリングアップグレード
5.0-5.5 6.x すべてのクラスタを再起動する必要がある
<5.x 6.x アップグレードするためにreindexする必要がある
6.x 6.y ローリングアップグレード(x<y)

その他の注意事項

  • Elasticsearchは前のメジャーバージョンで作成されたインデックスを読み取ることができる。古いインデックスは、reindexか削除する必要がある。6.xでは5.xで作成されたインデックスは使用できるが、2.x以前で作成されたインデックスは使用できない。また、5.xは2.xで作成されたインデックスを使用できるが、1.x以前で作成されたインデックスは使用できない。
    これは、スナップショットとリストアでバックアップされたインデックスにも適用される。indexが2.xで作成されていた場合、スナップショットが2.xクラスタによって作成されていても、indexを6.xクラスタにリストアすることはできない。
  • 互換性のないインデックスが存在する場合、Elasticsearchのノードは起動に失敗する。
  • 古いインデックスをアップグレードする方法については、以下の公式ドキュメント Reindex before upgradeを参照するとよい。 www.elastic.co