当前位置:   article > 正文

副本技能-ElasticSearch索引数据迁移_validation failed: 1: no settings to update;

validation failed: 1: no settings to update;

单刀直入
ElasticSearch不同服务器之间的数据迁移方案!

1.迁移方式有如下几种

Elasticsearch-Dump迁移
Elasticsearch-Exporter迁移(凉凉)
Logstash定向索引迁移
Elasticsearch-Migration迁移
  • 1
  • 2
  • 3
  • 4

2.准备工作

2.1.确定要迁移的索引(Docker版ES7.7.0)

amazon_email_original_message  迁移到  amazon_email_original_message_copy
  • 1

2.2.检查索引中有数据

在这里插入图片描述

3.第一种工具迁移(ElasticDump)

3.1.安装基础操作工具

// 安装源
1) yum install epel-release
2) yum install nodejs
3) yum install npm
// 安装elasticdump
4) npm install elasticdump
// 进入elasticdump安装目录
5) cd node_modules/elasticdump/bin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

elasticdump安装中遇到问题
在这里插入图片描述
根据提示内容
1.我们缺少一个文件名为package.json的系统文件
执行命令:npm init -y
执行完成后再次执行上述命令。
在这里插入图片描述

3.2.执行命令拷贝数据

逐个执行如下命令;

1.拷贝映射
./elasticdump --input=http://[来源IP地址]:9200/[来源索引]  --output=http://[目标IP地址]:9200/[目标索引] --type=mapping
2.拷贝数据
./elasticdump --input=http://[来源IP地址]:9200/[来源索引]  --output=http://[目标IP地址]:9200/[目标索引] --type=data
3.拷贝analyzer如分词(需要分词器,可能不成功,不影响复制)
./elasticdump --input=http://[来源IP地址]:9200/[来源索引]  --output=http://[目标IP地址]:9200/[目标索引] --type=analyzer
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

成功结果如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
遇到的问题
1.analyzer拷贝结果如图
dump ended with error (get phase) => BAD_REQUEST
action_request_validation_exception
Validation Failed: 1: no settings to update
说明:这是权限验证失败,需要账号密码
在这里插入图片描述
此时需要配置安全验证,增加账户

curl -XPUT -u admin:admin http://[IP地址]:9200/_xpack/security/user/elastic/_password -H "Content-Type: application/json" -d '{ "password": "admin" }'
  • 1

命令执行后提示如下:
dd
要求ES开启安全配置
编辑ElasticSearch.yml文件,增加如下项重启即可

xpack.security.enabled: true
  • 1

4.第二种工具迁移(ElasticSearch-Exporter)

4.1.安装基础操作工具

// 操作工具
1) npm install nomnom
2) npm install colors
3) npm install elasticsearch-exporter --production
  • 1
  • 2
  • 3
  • 4

4.2.工具使用命令如下

# 一定要进入node_modules下的elasticsearch-exporter包目录中,可见到exporter.js才行,否则执行命令坑死人
node exporter.js -a <source hostname> -b <target hostname> -p <s port> -q <t port> -i <s index> -j <t index>
  • 1
  • 2

在这里插入图片描述

命令执行:node exporter.js --help
结果展示:
	Elasticsearch Exporter - Version 1.4.0
	Usage: exporter [options]
	Options:
	  -a <hostname>, --sourceHost <hostname>  迁移源机器地址
	  -b <hostname>, --targetHost <hostname>  迁移目的机器地址(如果没有设置索引,目的地址需要有别于源地址)
	  -p <port>, --sourcePort <port>   源机器的ES的端口,9200(一般)
	  -q <port>, --targetPort <port>    目标机器的ES的端口,9200(一般)
	
	  -i <index>, --sourceIndex <index> 源ES待导出的索引,如果该值不设定,整个的数据库都会导出。
	  -j <index>, --targetIndex <index>目标机器ES的索引,如果源索引设定,该值必须填写。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

可能存在问题
Cannot find module ‘/root/exporter.js’
在这里插入图片描述
这个是提示什么就是缺少什么包,重新安装一下就好:npm install xxx
实在不行就用淘宝的库安装:cnpm i xxx
在这里插入图片描述
错误:npm WARN deprecated nomnom@1.8.1: Package no longer supported. Contact support@npmjs.com for more info.
原因:包更新了,不再被支持,个人建议不要使用前端工具,很恶心!实在想用就去官方网站找原因吧!

居然说没有数据可导
Reading source statistics from ElasticSearch
The source driver has not reported any documents that can be exported. Not exporting.
在这里插入图片描述
出现这种问题,不好处理,放弃吧!!!

依旧解决不了问题,就果断放弃吧!
在这里插入图片描述

5.第三种工具迁移(Logstash)

5.1.安装基础操作工具

环境配置教程参考
链接:服务器基础环境安装教程

5.2.工具使用命令如下

进入logstash的config目录下,增加一个配置:logstash-es2es.conf

input {
  elasticsearch {
    hosts => [ "192.168.1.248:9200" ]
    index => "amazon_email_original_message"
    size => 1000
    scroll => "5m"
    docinfo => true
    scan => true
  }
}

# filter {
#   json {
#     source => "message"
#     remove_field => ["message"]
#   }
#   mutate {
#     # 此处可以重命名字段
#     rename => { "_id" => "wid" }
#   }
# }

output {
  elasticsearch {
    hosts => [ "192.168.1.248:9200" ]
    document_type => "docxinfo"
    index => "amazon_email_original_message_copy"
  }

  stdout {
    codec => "dots"
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

迁移成功结果
在这里插入图片描述

在这里插入图片描述

迁移可能遇到的问题
在这里插入图片描述
在这里插入图片描述
原因:Unknown setting ‘scan’ for elasticsearch
删除配置中的“scan”即可

6.第四种工具迁移(Elasticsearch-Migration)

6.1.迁移工具说明

支持多个版本间的数据迁移,使用scroll+bulk
1.版本支持1.x,2.x.5.0 (0.x未测试)
2.支持http basic auth 认证的es集群
3.支持导入覆盖索引名称(目前只支持单个索引导入的情况下可指定)
4.支持index setting和mapping的同步(相关es大版本,2.x和5.0之间不支持)
5.支持dump到本地文件
6.支持从dump文件加载导入到指定索引
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6.2.工具使用命令如下

工具来源GitHub,链接:ESM工具源码

1.下载工具
 wget https://github.com/medcl/esm/releases/download/v0.5.0/linux64.tar.gz
 后面可加 -O [重命名文件名称]     // 修改文件下载的默认名称
 2.解压缩
 tar  -zxvf 文件名称
 3.进入bin目录
 /home/esm/bin/linux64
 4.执行命令迁移
 ./esm -s http://192.168.1.248:9200 -d http://192.168.1.248:9200 -x amazon_email_original_message -y amazon_email_original_message_esm_copy -w=5 -b=100
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

迁移结果
在这里插入图片描述

在这里插入图片描述

7.总结

以上就是在下整理的ES数据迁移工具,不同环境个人自行选择!
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/492689
推荐阅读
相关标签
  

闽ICP备14008679号