关于使用elasticsearchdump, 在windows上通过dockerdesktop 安装的 es +kibana 如何完成数据的备份和还原

1.安装dockerdektop,https://www.docker.com/products/docker-desktop/,选择自己的windows操作系统

2.windows需要开启Hyper-V虚拟化技术的处理器

3.运行dockerdektop,配置国内镜像地址(华为云)https://console.huaweicloud.com/

4.安装es和kibana和elasticsearch-dump,点击“>_ Terminal”,拉镜像:

 1)docker pull elasticsearch:7.1.0

 2)docker pull kibana:7.1.0

 3)docker pull elasticdump/elasticsearch-dump

5.配置docker网络环境,因为kibana和es在不同的容器中,kibana默认的配置中es的地址为:http://elasticsearch:9200

   查看kibana配置  docker exec -it kibana bash   

   cd /config   

   vi kibana.yml

 可以使用自己的es地址进行替换,如果没有默认即可

 

  1)配置网络:docker network create es-net

  2)启动单节点es:docker run -d --name elasticsearch --network es-net -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.1.0

  3)启动kibana:docker run -d --name kibana --network es-net -p 5601:5601  -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200  kibana:7.1.0

  4)访问es、kibana确认服务正常

 

6.docker启动elasticsearchdump,备份源目标es的数据到本地,按顺序备份setting、mapping、data

  1)将es的settings文件备份到本地D盘esdata目录下

  docker run --rm -ti -v D:/esdata/:/tmp elasticdump/elasticsearch-dump --input=http://源esIP:9200/索引名称--output=/tmp/dump-settings.json --type=settings

  2)将es的mapping文件备份到本地D盘esdata目录下

  docker run --rm -ti -v D:/esdata/:/tmp elasticdump/elasticsearch-dump --input=http://源esIP:9200/索引名称 --output=/tmp/dump-mapping.json --type=mapping

  3)将es的data文件备份到本地D盘esdata目录下

  docker run --rm -ti -v D:/esdata/:/tmp elasticdump/elasticsearch-dump --input=http://源esIP::9200/索引名称--output=/tmp/dump-data.json --type=data

7.恢复数据到指定的es中

  1)查看备份下来的settings文件,确认是否存在分片,如果有分片,把分片设置number_of_replicas修改为0

  2)依次(setting-->mapping-->data)导入本地docker中的es内,elasticsearchdump网络默认使用host.docker.internal链接宿主机的ip

   docker run --rm -ti -v D:/esdata/:/tmp elasticdump/elasticsearch-dump --input=/tmp/dump-settings.json  --output=http://host.docker.internal:9200/索引名称 --type=settings

  docker run --rm -ti -v D:/esdata/:/tmp elasticdump/elasticsearch-dump --input=/tmp/dump-mapping.json --output=http://host.docker.internal:9200/索引名称--type=mapping

  docker run --rm -ti -v D:/esdata/:/tmp elasticdump/elasticsearch-dump --input=/tmp/dump-data.json --output=http://host.docker.internal:9200/索引名称--type=data

8.验证数据 

    

 

posted @ 2025-07-10 13:46  FlyingBread  阅读(83)  评论(0)    收藏  举报