某日因为工作需要需要做下ES的数据迁移,ES数据迁移应该是有多种方案的,譬如利用官方的数据快照和恢复方案。无奈快照也是需要共享文件存储系统的,而且我的数据又不多,查了下民间也有有一些插件的,譬如ES Dump工具:GitHub - elasticsearch-dump/elasticsearch-dump: Import and export tools for elasticsearch。
因为我的ES集群配置了用户认证和HTTPS,加上密码中含有特殊符号,小费了些十几分钟的周折终于顺利搞定:
# 第一步导入mapping
# 稍微解释下我的集群密码含有特殊符号@,这里需要将@转义成%40写进去
NODE_TLS_REJECT_UNAUTHORIZED=0 elasticdump \
--concurrency=8 \
--input=https://elastic:es%40X@host1:9200/index1 \
--output=https://elastic:es%40X@host2:9200/index1 \
--type=mapping
# 第二步导入数据
NODE_TLS_REJECT_UNAUTHORIZED=0 elasticdump \
--concurrency=8 \
--input=https://elastic:es%40X@host1:9200/index1 \
--output=https://elastic:es%40X@host2:9200/index1 \
--type=data