我有一个使用ElasticSearch 6.8的Spring Boot应用程序,我想以最少的停机时间将其迁移到ElasticSearch 7.16。我可以滚动更新,但迁移的问题是,当我将ES集群从版本6迁移到版本7时,我的应用程序中的一些功能由于破坏性更改而失败(例如总命中响应更改)
我还将我的ElasticSearch客户端在一个单独的分支中升级到版本7,我也可以部署它,但该客户端不能与ES版本6一起工作。所以我不能先发布应用程序,然后再进行ES迁移。我考虑过在几个小时的停机时间内同时进行应用程序部署和ES迁移,但如果出现问题,回滚可能会花费太多时间(我们在PROD中有10TB的数据)。
我仍然找不到一个解决这个问题的好方法。我正在考虑只迁移ES数据节点到7.16版本,并保持主节点在6.8。然后进行应用程序部署和迁移ElasticSearch主节点,同时减少停机时间。有人试过这样做吗?在不同版本(6.8和7.16)中运行我的ElasticSearch集群的数据和主节点会导致问题吗?任何帮助/建议都是非常感谢的
您提到的突破性更改可以通过在客户端代码中使用查询字符串参数rest_total_hits_as_int=true
来减轻,以便保持获得版本6中的总点击数(在您共享的同一链接中提到)。
不支持运行不同版本的主节点和数据节点,我不会冒险去做。如果您有一个可以测试此升级过程的临时环境,则更好。
由于6.8客户端与7.16集群兼容,您可以将这一小部分添加到6.8客户端代码中,然后您应该能够将集群升级到7.16。
当你的ES服务器升级时,你可以升级你的应用程序代码来使用7.16客户端,你会很好。
和通常的升级一样,因为一旦开始就不能恢复,所以应该先在测试环境中进行测试。