🐷

ローカルのElaticSearchを7.16.2から8.0.0にバージョンアップしてみた話

2022/04/13に公開

ElasticSearchv8 が出たのでバージョンアップを行いました。
Docker で構築された環境だったので、Dockerfile を勢いよく変更してみました。
すると以下のエラーでバージョンアップできませんでした。

java.lang.IllegalStateException: cannot upgrade a node from version [7.16.2] directly to version [8.0.0], upgrade to version [7.17.0] first.
        at org.elasticsearch.env.NodeMetadata.verifyUpgradeToCurrentVersion(NodeMetadata.java:122)
        at org.elasticsearch.env.NodeEnvironment.checkForIndexCompatibility(NodeEnvironment.java:500)
        at org.elasticsearch.env.NodeEnvironment.upgradeLegacyNodeFolders(NodeEnvironment.java:397)
        at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:290)
        at org.elasticsearch.node.Node.<init>(Node.java:388)
        at org.elasticsearch.node.Node.<init>(Node.java:277)
        at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:234)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:234)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:358)
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:166)
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:157)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
        at org.elasticsearch.cli.Command.main(Command.java:77)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:122)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
For complete error details, refer to the log at /usr/share/elasticsearch/logs/docker-cluster.log

読むと、一旦 v7.17.0 にあげてと怒られてます。
そのため一旦、7.16.2 -> 7.17 に Dockerfile を書き換えます。
その後、7.17 -> 8 にあげます。
めでたしめでたし。

原因

ローカル環境ではクラスタ構成の環境で開発しておりました。
そのためこの手順が必要だったようです。
単一ノードの場合は 7.16.2 から 8 にあげでもエラー表示されませんでした。

参考

Discussion