工作中使用elasticdump导出索引
需求:
由于环境迁移,需要将索引从一个集群迁移到另一个集群。备注:只迁移索引,不迁移索引的数据。
环境:
elasticsearch版本:6.8
使用的工具:elasticdump
源服务器:192.168.16.141
目标服务器:192.168.18.104
elasticsarch认证方式:用户名和密码 【用户名:elastic 密码:7pdejZOxE9cy】 源和目标认证方式一样
迁移命令:
以迁移hostindex索引为例
elasticdump --input=http://elastic:7pdejZOxE9cy@192.168.16.141:9200/hostindex --output=http://elastic:7pdejZOxE9cy@192.168.18.104:9200/hostindex --type=mapping
elasticdump --input=http://elastic:7pdejZOxE9cy@192.168.16.141:9200/hostindex --output=http://elastic:7pdejZOxE9cy@192.168.18.104:9200/hostindex --type=settings
# 迁移数据。因为我的需求是只迁移数据结构,所以这一步就不需要执行。如果需要迁移数据的话,要加上这一步
elasticdump --input=http://elastic:7pdejZOxE9cy@192.168.16.141:9200/hostindex --output=http://elastic:7pdejZOxE9cy@192.168.18.104:9200/hostindex --type=data
注意:在使用elasticdump导出数据时,默认为100条,如果需要大批量的导出数据,这速度就可想而知了,那么为了方便起见,ES 提供了 limit 参数用于配置每次请求导出时的数量限制。
示例:
elasticdump \
--input=http://elastic:7pdejZOxE9cy@192.168.16.141:9200/hostindex \
--output=http://elastic:7pdejZOxE9cy@192.168.18.104:9200/hostindex \
--type=data \
--limit 10000 # 最大只能设置为10000,再大就会报错
覆盖现有索引
如果需要覆盖现有索引的数据,可以添加 --overwrite 参数:
elasticdump \
--input=http://elastic:7pdejZOxE9cy@192.168.16.141:9200/hostindex \
--output=http://elastic:7pdejZOxE9cy@192.168.18.104:9200/hostindex \
--type=data \
--limit 10000 \
--overwrite
迁移后查看索引的mapping和settings是否和源索引一样
查看mapping
curl --user elastic:7pdejZOxE9cy -s http://192.168.18.104:9200/hosindex/_mapping | jq
查看settings
curl --user elastic:7pdejZOxE9cy -s http://192.168.18.104:9200/hostindex/_settings | jq