Elasticsearch官档翻译——3 突出的版本变化

突出的版本变化

译者批注:这一章译者选择翻译5.5版本的变化,因为全文主要讲解2.x版本,所以有必要了解高版本的新特性
这一章主要讨论版本之间的不同,特别是当你要从一个版本迁移数据到另一个版本的时候,你需要注意。

通常的规律:

  • 跨越大版本迁移 —— 例如1.x到2.x —— 需要停集群升级。
  • 小版本迁移 —— 例如1.x到1.y —— 需要滚动升级。
  • 跨越不连续版本迁移 —— 例如 1.x到5.x —— 不支持
    译者批注:建议日志类集群可以进行跨版本升级,业务类集群如果已经投入大量使用,就先缓缓吧,数据同步又是一个很麻烦的过程,特别是不同业务要求又不同,牵扯到的人力成本比较高,升级的性价比不高。可以选择搭建新集群接入新业务,老业务再有重构需求时一并升级

详细请看集群升级


5.5版本变动

忽略隐藏文件夹

之前的版本会跳过plugin目录下面的隐藏文件夹,这样会导致损坏的插件安装后不会被ES探查到,所以这个宽泛的特性被移除了。

跳过内核参数设置

Elasticsearch在安装的时候尝试设置vm.max_map_count参数(译者批注:译者看了下2.2版本的启动脚本确实有执行sysctl -q -w vm.max_map_count=$MAX_MAP_COUNT),在某些系统下可能失败。在早先的版本,ES接受一个ES_SKIP_SET_KERNEL_PARAMTERS参数来跳过内核参数设置。从Elasticsearch5.5.0开始,取消这个参数以及相应的功能,可以通过systemd-sysctl操作来实现相同的效果。

RPM/DEB安装包在/etc/elasticsearch下配置了 setgid

现在RPM/DEB安装包中在/etc/elasticsearch里设置了 setgid,这样任何在/etc/elasticsearch目录下的文件或子目录都属于同一个组(root:elasticsearch)。主要是保证这个目录下创建的文件都对elasticsearch用户可读。

获取别名和获取映射 API 返回404

之前的版本,在请求获取别名 和get mapping 两个api的时候,无论什么情况都不会返回404。在Elasticsearch5.5版本后,当获取别名或获取映射不存在的时候,返回404.

Java API改变

has_childhas_parentparen_id等查询都放到了 parent-join模块。children聚合也放到了这个模块下。parent-join模块需要在TransportClient使用的时候加载。或者当要动态加载模块时,使用PreBuiltTransportClient替代


5.4版本变动

Delete_By_Query API改变

Delete_By_Query的请求体必须有查询条件,不包含请求体的Delete_By_Query在6.0.0是不合法的。


5.3版本变动

日志配置

此前的版本Elasticsearch暴露了一个系统参数 es.logs,它包含了系统配置的日志绝对路径,并且它的前缀用来表示各种日志文件名(主日志文件,过期日志和慢日志)。这个参数已经被下面三个取代了:

  • es.logs.base_path:日志目录绝对路径
  • es.logs.cluster_name:默认的各种日志文件名前缀。
  • es.logs.node_name:如果文件名中需要包含节点名的话,在这里用。
    es.logs参数已经废弃并将在6.0.0版本移除。

Netty 3 被废弃

Netty 3中的transport(transport.type=netty3)和Http(http.type=netty3)在6.0.0被废弃

弱检查的布尔值被废弃

布尔值 除了false , “false” 和 true “true” 其他都被废弃(译者批注:2.2中有些配置支持使用 yes no)。REST API和映射配置中也废弃了这种使用方式


5.2版本变动

启动检查系统调用

Elasticsearch自2.1.0版本开始试图加入系统调用过滤器。在某些系统中,系统调用过滤器可能导致失败。在早先的版本会加入waring日志记录,但是会继续执行,可能用户并不知道这个情况。从5.2.0版本开始加入启动检查系统调用,看是否成功。如果你启动的时候因为这个检查而出问题了,你需要检查是需要修改配置中的系统调用过滤器,还是自担后果去掉这个系统调用过滤器。

系统参数过滤器配置

简单说就是bootstrap.seccomp这个参数被更名为:bootstrap.system_call_filter。前者仍旧支持但是6.0版本会被移除。

Java API删除了source方法的一些重写

删除了以下方法:

  • PutRepositoryRequest#source(XContentBuilder)
  • PutRepositoryRequest#source(String)
  • PutRepositoryRequest#source(byte[])
  • PutRepositoryRequest#source(byte[], int, int)
  • PutRepositoryRequest#source(BytesReference)
  • CreateSnapshotRequest#source(XContentBuilder)
  • CreateSnapshotRequest#source(String)
  • CreateSnapshotRequest#source(byte[])
  • CreateSnapshotRequest#source(byte[], int, int)
  • CreateSnapshotRequest#source(BytesReference)
  • RestoreSnapshotRequest#source(XContentBuilder)
  • RestoreSnapshotRequest#source(String)
  • RestoreSnapshotRequest#source(byte[])
  • RestoreSnapshotRequest#source(byte[], int, int)
  • RestoreSnapshotRequest#source(BytesReference)
  • RolloverRequest#source(BytesReference)
  • ShrinkRequest#source(BytesReference)
  • UpdateRequest#fromXContent(BytesReference)

_timestamp 元数据字段改变

timestamp元字段的类型由java.lang.String改成了java.util.Date

5.1版本变动

别名添加了和索引名几乎相似的校验规则

现在别名添加了和索引名几乎相似的校验规则。唯一不同的是别名允许使用大写字母。意味着别名不允许使用如下规则:

  • _, -, 或 +开头
  • 包含这些字符:#, , /, *, ?, ", <, >, |, ,
  • 超过100个UTF编码字节
  • 使用 ...

5.1.0版本以前上述规则的别名还支持,但是现在不支持了。由于使用_aliases API 修改别名实际上是删除别名再自动重新创建一个,修改别名如果非法也不再支持。

Log4j的依赖版本升级

Log4j的版本从2.6.2升级到2.7。如果你使用transport client,需要更新相应的Log4j版本

节点本地发现已经移除

节点本地发现已经移除。这种发现机制的实现,用于内部的tribe服务以及在同一个JVM环境下运行多个节点的测试。这意味着设置discovery.typelocal启动elasticsearch将会失败。

UnicastHostsProvider 现在基于拉的模式

插件基于zen发现的UnicastHostsProvider现在采用拉的模式。实现DiscoveryPlugin类并覆盖getZenHostsProviders方法。现在也可以通过discovery.zen.hosts_provider配置 hosts_provider类型。

ZenPing和主节点选举服务的可插拔特性取消

ZenPing还有选举服务类都不支持可插拔了。有必要的话,要么自己实现发现,要么扩展ZenDiscovery

onModule支持移除

之前通过Guice注入模块的插件可以实现一个onModule方法。插件中所有自定义onModule方法的实现都被转换成基于拉的插件。onModule这个hook被移除。
译者批注:源码大概看了下,2.2版本中,节点启动时先加载插件,然后读取插件中的onModule方法并把plugin对应的module作为参数传递进去。这个方法并不是plugin类要求继承的,而是一个约定

索引的stats和节点的statsAPI中无法识别的参数

索引和节点的stats API允许查询Elasticsearch中无法识别的一些指标。在之前的版本会默认接受这些不识别的参数(例如 transport)。在5.1.0中这个情况不再发生;不能识别的参数将导致请求失败。5.0.0移除的这个特性在5.1.0以及之后的5.x系列会给出警告,但是6.0之后会和其他不识别的参数一样,导致请求失败。


5.0版本变动

这一张讲解5.0的变动,当你迁移集群到这个版本时你要注意。

迁移插件

当你升级到Elasticsearch 5.0后,elasticsearch-migration插件(2.3以上的版本)会帮你发现需要解决的问题

5.0之前版本创建的索引

Elasticsearch5.0可以解析2.0之后创建的索引,但是2.0之前的索引无法识别,节点启动会失败。

初次启动Elasticsearch 5.0,他将会自动重命名索引目录,目录命名由原来的索引名改成索引的UUID,

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容