elasticserach 一直使用1.x的,这个季度准备做好升级到5.x的准备工作,因为是管理整个集群,需要做到让其他业务方无脑升级
这个季度记录升级过程:
1.x 升级到2.x
装上elasticsearch-migration-1.x插件一检查发现很多问题,先说红色不允许的
启动上遇到的问题:
《——————————影响严重,会阻止集群启动---------------------》
1.mapping:1.x支持同一index中不同type下有相同名字的字段,且字段mapping可以万全不同
2.x不行了,不同type下的字段类型必须相同,分词方式,是否索引等设置也必须相同,除了下面说的几种情况
Fields with the same name, in the same index, in different types, must have the same mapping, with the exception of the copy_to, dynamic, enabled, ignore_above, include_in_all, and properties parameters, which may have different settings per field.
这个改动还是很支持的,统一之后免得出现混乱的使用,我这边在1.x使用时就因为不同type下的相同name属性不一样出过问题。
使用上需要注意的地方:
1."_id"这个字段在1.x中作为自动生成的或者mapping指定的唯一标识,2.x中名称变化了,变成了“_uid”
如果在使用中用到了_id排序的,需要修改。(单单改个名字?何解,没什么意义啊)
---再次查询了api,我理解错了,1.x的id可以指定path,2.x的不能指定了,只能自动生成
2.routing的改动,个人觉得这个改动挺大的,也挺没道理的,以前的"_routing": 需要指定一个path,这个觉得很好啊,也很好理解啊,为何现在要变方式,还是2部操作,闹哪样,暂时还没搞清楚这里的伏笔。--不过有使用routing的需要修改了
3.BOOLEAN字段的使用,主要是返回的内容变了,以前是true/false(T/F),现在变成了1/0
如果有使用的话必须得注意这一点了。
4.过期时间的使用:_timestamp 和 _ttl 舍弃,貌似2.x也能有相同功能,不过未经常使用,暂时不关注
5.点号的使用:这个也是一种规范,之前1.x字段中可以包含”.“,2.x现在已经不允许了,如果以前索引中有的话,现在就有点悲剧了,需要重建数据
6.分词属性的设置:使用了很久的index_analyzer被干掉了,有点怀恋,现在直接用analyzer,不过有幸保留了search_analyzer,也不错,让设置更简洁了。(个人感觉有点脱了裤子放屁,以前3个多好用的)
_analyzer 元字段,允许对每篇文档进行分析器设置也被移除了(未使用过这个属性,不清楚,不过是变动,也贴在这里)
7.A field can no longer be referenced using its short name. Instead, the full path to the field is required.
字段引用名称的问题,没怎么使用到,一般遇到这种问题,带上全路径就ok了
8.日期的使用:还未完全搞清楚,解析方式有变化,搞清楚了再更新上来
这个季度记录升级过程:
1.x 升级到2.x
装上elasticsearch-migration-1.x插件一检查发现很多问题,先说红色不允许的
启动上遇到的问题:
《——————————影响严重,会阻止集群启动---------------------》
1.mapping:1.x支持同一index中不同type下有相同名字的字段,且字段mapping可以万全不同
2.x不行了,不同type下的字段类型必须相同,分词方式,是否索引等设置也必须相同,除了下面说的几种情况
Fields with the same name, in the same index, in different types, must have the same mapping, with the exception of the copy_to, dynamic, enabled, ignore_above, include_in_all, and properties parameters, which may have different settings per field.
这个改动还是很支持的,统一之后免得出现混乱的使用,我这边在1.x使用时就因为不同type下的相同name属性不一样出过问题。
使用上需要注意的地方:
1."_id"这个字段在1.x中作为自动生成的或者mapping指定的唯一标识,2.x中名称变化了,变成了“_uid”
如果在使用中用到了_id排序的,需要修改。(单单改个名字?何解,没什么意义啊)
---再次查询了api,我理解错了,1.x的id可以指定path,2.x的不能指定了,只能自动生成
2.routing的改动,个人觉得这个改动挺大的,也挺没道理的,以前的"_routing": 需要指定一个path,这个觉得很好啊,也很好理解啊,为何现在要变方式,还是2部操作,闹哪样,暂时还没搞清楚这里的伏笔。--不过有使用routing的需要修改了
3.BOOLEAN字段的使用,主要是返回的内容变了,以前是true/false(T/F),现在变成了1/0
如果有使用的话必须得注意这一点了。
4.过期时间的使用:_timestamp 和 _ttl 舍弃,貌似2.x也能有相同功能,不过未经常使用,暂时不关注
5.点号的使用:这个也是一种规范,之前1.x字段中可以包含”.“,2.x现在已经不允许了,如果以前索引中有的话,现在就有点悲剧了,需要重建数据
6.分词属性的设置:使用了很久的index_analyzer被干掉了,有点怀恋,现在直接用analyzer,不过有幸保留了search_analyzer,也不错,让设置更简洁了。(个人感觉有点脱了裤子放屁,以前3个多好用的)
_analyzer 元字段,允许对每篇文档进行分析器设置也被移除了(未使用过这个属性,不清楚,不过是变动,也贴在这里)
7.A field can no longer be referenced using its short name. Instead, the full path to the field is required.
字段引用名称的问题,没怎么使用到,一般遇到这种问题,带上全路径就ok了
8.日期的使用:还未完全搞清楚,解析方式有变化,搞清楚了再更新上来