乐趣区

关于elasticsearch:ESElasticdump数据备份与数据转移索引还原

1. 对于 elasticdump?

elasticdump 原理

  • elasticdump 是实现不同 ElasticSearch 集群之间索引迁徙的工具。默认状况下,ITOA 集群部署胜利后,该工具存在于装置节点(客户端节点)上。
  • 不同 ElasticSearch 集群之间要实现索引数据的转移,须要应用到 elasticdump 工具。
  • 要实现 ElasticSearch 的数据迁徙,除了要实现索引中文档对象的迁徙外,还须要迁徙索引中映射模式的迁徙。对于某一个索引的映射信息能够通过 ElasticSearch 中的_plugin/head 插件在 web 界面通过信息中的索引信息来查阅。如图 1 所示

2.elasticdump 应用形式

通过 npm 装置 elasticdump

# 本地装置和全局装置的区别在于它是否主动给你设置环境变量,其余的没有区别
# 本地装置
$ npm install elasticdump
$ ./bin/elasticdump
# 全局装置
$ npm install elasticdump -g
$ elasticdump

操作示例:导出

# 格局:elasticdump --input {protocol}://{host}:{port}/{index} --output ./test_index.json
#例子:将 ES 中的 test_index 中的索引导出
#导出以后索引的 mapping 构造
$ elasticdump --input http://192.168.56.104:9200/test_index --output ./test_index_mapping.json --type=mapping
#导出以后索引下的所有实在数据
$ elasticdump --input http://192.168.56.104:9200/test_index --output ./test_index.json --type=data

操作示例:导入

# 创立索引
$ curl -XPUT http:192.168.56.104:9200/test_index
#因为导入的是 mapping,所以设置 type 为 mapping
$ elasticdump --input ./test_index_mapping.json --output http://192.168.56.105:9200/ --type=mapping
#因为导入的是 data(实在数据)所以设置 type 为 data
$ elasticdump --input ./test_index.json --output http://192.168.56.105:9200/ --type=data

通过 docker 镜像应用 elasticdump

# 镜像下载
$ docker pull taskrabbit/elasticsearch-dump
# 上面还是例子:通过镜像导出数据到本地
# 创立一个文件夹用于保留导出数据
$ mkdir -p /root/data
# 上面须要对门路进行映射并执行命令(导出 mapping)$ docker run --rm -ti -v /data:/tmp taskrabbit/elasticsearch-dump \
  --input=http://production.es.com:9200/my_index \
  --output=/tmp/my_index_mapping.json \
  --type=mapping
# 导出(data)$ docker run --rm -ti -v /root/data:/tmp taskrabbit/elasticsearch-dump \
  --input=http://192.168.56.104:9200/test_index \
  --output=/tmp/elasticdump_export.json \
  --type=data
  -----------------------------------------------------------------------------
# 以下内容为 ES -> ES 的数据迁徙例子
$ docker run --rm -ti taskrabbit/elasticsearch-dump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=mapping
$ docker run --rm -ti taskrabbit/elasticsearch-dump \
  --input=http://production.es.com:9200/my_index \
  --output=http://staging.es.com:9200/my_index \
  --type=data

3. 如果须要操作的 es 集群配置了 xpack 平安认证

在对应的 http 前面,增加 user:password@

docker run --rm -ti elasticsearch-dump --input=http://192.168.1.2:9200/my_index --output=http://user:password@192.168.1.2:9200/my_index --type=data

附录:
https://www.cnblogs.com/mojit…
https://github.com/elasticsea…

退出移动版