工作中使用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

 

posted @ 2024-10-18 13:53  羊脂玉净瓶  阅读(52)  评论(0)    收藏  举报