【问题标题】:Upgrade Elastic Search 1.7 to a newer version将 Elastic Search 1.7 升级到更新版本
【发布时间】:2019-09-18 01:15:58
【问题描述】:

我们正准备将 Elastic Search 1.7 升级到更新版本。

在开始升级之前我们应该注意什么,对于我们应该升级到的版本有什么建议吗?

技术上是否可以从 1.7 升级到 5.x 还是我们应该先升级到 2.x?

【问题讨论】:

    标签: elasticsearch upgrade


    【解决方案1】:

    最近经历了这个,当您远远落后时,有两种方法可以升级 Elasticsearch:

    迈出一大步,一次完成所有工作,或者一次完成一个主要版本。

    后者可能更安全,但速度较慢。这可能是由于 Elasticsearch 非常好的兼容性策略:主要版本 X 中的任何重大更改都会在版本 X-1 中引发弃用警告,但会继续工作。

    我个人建议一次使用一个版本,由于这种方法更复杂,我将更详细地描述它。

    这允许如下模式:

    1. 修复版本 1 上的所有弃用警告
    2. 在版本 2 上进行测试,并在满意时推出生产。如果出现问题,您可以随时回滚到版本 2(但是您必须从头开始创建新索引)
    3. 修复版本 2 上的所有弃用警告
    4. 测试并升级到版本 5(没有 3 或 4)
    5. 等等...如果您愿意,可以查看所有版本

    以下是一些值得考虑的一般原则

    从头开始为新版本重建索引

    是的,文档说,例如,您可以load an index created in ES 1.7 into ES2,但我不建议这样做。根据我的经验,当你这样做时,一些查询实际上会变慢,即使新版本的 Elasticsearch 通常至少保持性能,如果没有提高性能。

    有查询更改和架构更改。相应地对待他们

    通常,每次更新都需要对您的 Elasticsearch 架构映射进行一定程度的更改,并对查询结构进行一些更改。查询结构通常非常更容易迭代,因为它在您的应用程序代码中并且可以随时改进或回滚。架构更改更难,因为它们通常需要您从头开始创建新索引并以某种方式迁移。

    但是,请记住,两种类型的更改都存在。只需调整您的 Elasticsearch 架构,直到它适用于新版本,而未能更新您的查询可能会导致意外!

    最后,这是我从每次升级中回忆的主要痛点的粗略列表

    ES 1 -> ES 2

    ES 2 -> ES5

    • String datatype 已拆分为 text and keyword datatypes
    • TF/IDF 评分已替换为 BM25。这不需要您做任何工作,但可能会改变您的某些查询的结果。在 ES5,尤其是 ES6 中,BM25 评分更可配置,但您可能根本无法在 ES5 和 ES2 中获得完全相同的结果

    【讨论】:

    • 我不想不同意这一点,因为一步一步做是一种选择。您也可以使用remote reindex 立即进行完整跳转(您很可能需要在该过程中使用脚本修复数据)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2016-02-24
    • 2012-04-21
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多