Elasticsearch源码解析与优化实战:附录 A 重大版本变化

在考虑是否升级到新版本时,第一个问题经常是:版本变化大吗?这是一个很难回答的问题。背后隐含的问题首先是兼容性方面的:原有的业务是否受到影响?哪些特性被废弃了?使用的查询语法是否变了?我们都有哪些相关模块需要做出调整?调整幅度有多大?这些问题都和业务上的实际使用情况有关,没有固定的答案。除了查看版本变更手册,我们需要根据自己的业务使用情况评估版本变化对自己的影响

除了版本兼容性方面的问题另一方面是考虑新版本带来了什么好处例如,写入速度和查询速度是否变快了?添加了哪些新的特性?这些特性对我来说是否有用

对于是否需要升级到新版本方面,我们的建议是:不要错过每个大版本。如果因为时间原因或懒得对新版本做出适配和调整,则在后期会越来越难升级,以至于最后基本无法升级。当然,也不必因为每个小版本的更新去升级集群,除非修复了一些影响比较大的 bug。在比较注重稳定性的生产环境中,升级版本可以略微保守:可以选择一个大版本并在社区已经大范围应用检验之后升级

下面列出一些常用内容涉及的变化,完整的版本变更说明可以参考手册https://www. elastic.co/guide/en/elasticsearch/reference/current/breaking-changes.html

7.x 重大变化

· 运行时最好用jdk11(LTS)

6.x 重大变化

· 在Linux系统中禁用root用户直接启动,需要新建用户;

· 每个索引支持一个_type

· 默认禁用_all 字段

· 优化了 doc values,占用磁盘空间更少,读写速度更快

· 模板规则定义方式由 template 改为 index_patterns

· 增加了序列 ID,加快索引恢复速度

· 查询语法变化比较多,请参阅手册

5.x 重大变化

· string 类型被 text/keyword 两个类型取代,分别代表分词和不分词

· 加强了启动过程中的外部环境监测

· 索引级的设置不能再写到 elasticsearch.yml 配置文件,需要为每个索引单独设置,或者写到模板中

· 添加了 Profile API、Shrink API、Rollover API、Reindex API

· 增加了 Ingest Node

· 添加了 Painless 脚本

· 增加了 Task Manager,重建索引等任务被 Task Manager 管理,可以观察任务状态,取消任务等

· 评分算法使用 BM25 代替 TF/IDF

posted @ 2020-12-03 15:13  Marlon康  阅读(203)  评论(0编辑  收藏  举报