念念不忘
必有回响

ElasticSearch跨集群迁移数据

最近开始升级ElasticSearch的版本,这次升级跨度比较大,从5.5.2升级到了当前最新稳定版7.8,不过大体差别不是很大,迁移过程中注意一下两点即可:

  • 5.5.2索引中的type已经废弃,在7.8创建索引的时候需要删除
  • 索引中的的mapping需要修改为mappings

升级完成后,创建对应的索引,然后进行数据迁移。由于业务对ES的需求还未完善,所以可以先停止ES的数据更新,因为这两个集群在同一个机房部署,所以这里我采用了elasticsearch-dump的方式来迁移。

elasticsearch-dump比较适合数据量不大,迁移索引个数不多的场景,所以如果您的索引较多,并且索引内数据量较大,还是采用`snapshot`方式更为合适。因elasticsearch-dump采用nodejs开发,所以需要先安装好`nodejs`,然后执行如下命令进行安装:

npm install elasticdump -g

针对这个工具,其主要参数如下:

  • –input: 源地址,可为ES集群URL、文件或stdin,可指定索引,格式为:{protocol}://{host}:{port}/{index}
  • –input-index: 源ES集群中的索引
  • –output: 目标地址,可为ES集群地址URL、文件或stdout,可指定索引,格式为:{protocol}://{host}:{port}/{index}
  • –output-index: 目标ES集群的索引
  • –type: 迁移类型,默认为data,表明只迁移数据,可选settings, analyzer, data, mapping, alias
  • –limit: 限制数,每次写入的数据条数,最大值为10000,默认为100

例如:

elasticdump --input=http://10.10.100.208:9200/th11_entry_qtty_peak_dectm_2017 --output=http://10.40.60.13:9200/th11_entry_qtty_peak_dectm_2017 --type=settings
elasticdump --input=http://10.10.100.208:9200/th11_entry_qtty_peak_dectm_2017 --output=http://10.40.60.13:9200/th11_entry_qtty_peak_dectm_2017 --type=mapping
elasticdump --input=http://10.10.100.208:9200/th11_entry_qtty_peak_dectm_2017 --output=http://10.40.60.13:9200/th11_entry_qtty_peak_dectm_2017 --type=data

因这次是跨版本迁移,所以我已经通过脚本创建好了对应的索引,这里我采用只迁移数据的方式:

elasticdump --input=http://10.10.100.208:9200/th11_entry_qtty_peak_dectm_2017 --output=http://10.40.60.13:9200/th11_entry_qtty_peak_dectm_2017 --type=data --limit=10000

注意,最好加上--limit参数,并且我设置为最大值,这样每秒5000-10000的样子。如果是同一个版本之间的迁移,也可以使用如下方式将所有索引的迁移过去:

elasticdump --input=http://10.10.100.208:9200/ --output=http://10.40.60.13:9200/
赞(0) 打赏
未经允许不得转载:码农志 » ElasticSearch跨集群迁移数据

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏