elasticsearch1.7.3升级到2.1.1记录
来源:互联网 发布:java对string排序 编辑:程序博客网 时间:2024/05/17 05:10
升级手册直接参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html
升级前可以看下有啥改动:https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-2.0.html
步骤一:关闭分片自动分配
PUT /_cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}
步骤二:把内存里的数据刷到硬盘
POST /_flush/synced
步骤三:关闭旧集群,配置新集群
步骤四:启动新集群
步骤五:等待集群状态变成黄色,所以索引主分片启动完成
步骤六:打开分片自动分配
PUT /_cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
由于集群索引比较大,总共上100+个索引,5000+个分片,升级后启动时基本都在做索引升级操作。之前了解到es2.x和es1.x对多目录索引路径的存放策略是不同的。详情可以看之前的一篇文章。于是在升级的过程中就需要把所有原先索引分布在多个磁盘的索引文件拷贝到单个磁盘中。这也是比较耗时和耗io的,基本相当于把索引文件拷贝了一份。
其中主要的升级源码就是:
org/elasticsearch/common/util/MultiDataPathUpgrader.java这个类。
关于选择那个目录作为某个索引某个分片的目录es的做法也比较简单。如果所有目录的可用磁盘空间都是某个索引分片的2倍以上,则选择该分片索引文件占空间最大那个目录作为该分片的目录,也是为了减少文件的传输io。如果不是所有目录的可用磁盘空间都是某个索引分片的2倍以上,则选择可用空间最大那个使用。
要注意的是一定要在升级前进行兼容性测试,插件地址:https://github.com/elastic/elasticsearch-migration/
不然有可能出现mapping冲突导致无法启动es,像我这样就有个索引有多个mapping,一些mapping里的字段名重复了,这在es2.0里是不允许的,启动时会报以下错:
unable to upgrade the mappings for the index [indexname], reason: [Mapper for [fieldname] conflicts with existing mapping in other types:
参考资料:点击打开链接
1 0
- elasticsearch1.7.3升级到2.1.1记录
- Elasticsearch1.7.3安装、配置
- [记录]升级到yake0.7....
- 升级到ubuntu 12.10 记录
- 记录从greendao2.1升级到greendao3.2!
- Knime升级到2.1.1
- Vs2003升级到VS2008过程记录
- rails2 升级到 rails3 过程详细记录
- CDH 5.1升级到CDH5.2记录
- hive 0.13.0 升级到 2.1.1
- 升级到GlassFishV3.1
- 从VS2003(.net1.1)升级到vs2005(.net2.0)全程跟踪记录
- MongoDB从2.4.9升级到2.6.0记录及PHP的mongo扩展从1.4.5升级到1.5.1
- [记录]HTC Hero 升级到Android 2.3.4
- ArcGIS Engine升级记录,从9.3到10.0
- hadoop 0.20.2版本升级到1.0.3 记录
- Beancontext容器升级到2.0版本。加入aop功能--记录
- zabbix2.4 升级到zabbix3.0 失败记录
- poj_3461 Oulipo(KMP:找出所有模式串)
- 数据结构基础之队列
- 无线无法上网, windows7 wlan autoconfig无法启动 错误: 1068 依赖服务或组无法启动
- spring mvc 基于注解demo
- [LeetCode]Q3. Longest Substring Without Repeating Characters
- elasticsearch1.7.3升级到2.1.1记录
- 微软云azure部署oracle报错:PMON (ospid: 7504): terminating the instance due to error 822
- MySql数据引擎简介与选择方法
- python 静态方法和类方法
- Android中AsyncTask的简单用法(简化版)
- NYOJ 题目20 吝啬的国度
- Android中 将布局文件/View显示至手机屏幕的 整个过程分析
- The Bus Driver Problem
- 面向对象设计关于如何确定类和类的方法