elasticsearch索引数据备份与恢复

elasticsearch备份与恢复

1.配置备份文件目录配置

在 config/elasticsearch.yml 文件中加入如下配置:

shell 复制代码
# 配置单个备份文件目录
path.repo: ["/backups/my_backup"]

# 配置多个备份文件目录
path.repo: 
  - "/backups/my_backup"
  - "/backups/fx_backup"

配置完成后需重启es服务。

2.创建备份仓库并查看

shell 复制代码
curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/仓库名' -u 用户名:密码 -d '{"type": "fs","settings": {"location":"备份仓库路径","compress": true}}'

# 在/backups/my_backup下新建名为my_backup的仓库
curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/my_backup' -u elastic:123456 -d '{"type": "fs","settings": {"location":"/backups/my_backup","compress": true}}'

# 在/backups/fx_backup下新建名为fx_backup的仓库
curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/fx_backup' -u elastic:123456 -d '{"type": "fs","settings": {"location":"/backups/fx_backup","compress": true}}'

# 查看仓库信息
curl -XGET 'http://127.0.0.1:9200/_snapshot?pretty' -u elastic:123456

# 返回的仓库信息
{
  "my_backup" : {
    "type" : "fs",
    "settings" : {
      "compress" : "true",
      "location" : "/backups/my_backup"
    }
  },
  "fx_backup" : {
    "type" : "fs",
    "settings" : {
      "compress" : "true",
      "location" : "/backups/fx_backup"
    }
  }
}

# 删除备份仓库
# curl -X DELETE "localhost:9200/_snapshot/仓库名" -u elastic:123456
# curl -X DELETE "localhost:9200/_snapshot/my_backup" -u elastic:123456

3.备份索引数据

shell 复制代码
# 备份单个索引数据
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/仓库名/备份名' -d '{"indices": "索引名"}' -u 用户名:密码

# 备份多个索引数据
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/仓库名/备份名' -d '{"indices": "索引名1,索引名2,索引名3"}' -u 用户名:密码
curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/my_backup/my_test_2025' -d '{"indices": "my_test_1,my_test_2"}' -u elastic:123456

curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/fx_backup/fx_test_2025?wait_for_completion=true' -d '{"indices": "fx_test_1,fx_test_2"}' -u elastic:123456
# wait_for_completion=true 是指该api在备份执行完毕后再返回结果,否则默认是异步执行的。线上执行时不用设置该参数,让其在后台异步执行即可。

# 备份全部
# curl -XPUT -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/仓库名/备份名' -u 用户名:密码

# 查看备份的索引
# curl -XGET 'http://127.0.0.1:9200/_snapshot?pretty' -u 用户名:密码

4.恢复备份索引数据

shell 复制代码
# 恢复索引前要确保目标es集群中没有存在相同的索引名,或者恢复时重命名索引名。
# 删除索引语法(支持通配符):
# curl -XDELETE "http://127.0.0.1:9200/索引名" -u 用户名:密码

# 恢复单个索引数据
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/仓库名/备份名/_restore' -d '{"indices": "索引名"}' -u 用户名:密码
curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/my_backup/my_test_2025/_restore' -d '{"indices": "my_test_1"}' -u elastic:123456

# 恢复多个索引数据
curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/fx_backup/fx_test_2025/_restore' -d '{"indices": "fx_test_1,fx_test_2"}' -u elastic:123456

# 恢复索引并重命名索引名
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/my_backup/备份名/_restore' -d '{"indices": "原索引名","rename_pattern": "原索引名","rename_replacement": "新索引名"}' -u 用户名:密码


# 查看恢复状态:
# curl -XGET "http://127.0.0.1:9200/_snapshot/仓库名/备份名/_status" -u 用户名:密码
curl -XGET "http://127.0.0.1:9200/_snapshot/fx_backup/fx_test_2025/_status" -u elastic:123456

#即只恢复指定索引名数据,下面以索引名为fx_*开头的索引数据为例,注意不要恢复".security-6"的索引,这个索引记录了用户认证信息,不能被删除
# curl -XPOST -H 'Content-Type: application/json' 'http://127.0.0.1:9200/_snapshot/my_backup/snapshot_all/_restore' -d '{"indices": "fx_*"}'  -u 用户名:密码


# 查看索引名:

# curl http://127.0.0.1:9200/_cat/indices?v -u 用户名:密码

curl http://127.0.0.1:9200/_cat/indices?v -u elastic:123456
  • 参数说明:
    • indices:只恢复匹配的索引,忽略快照中存在的其他索引,可支持通配符。
    • rename_pattern:查找所提供的模式能匹配上的正在恢复的索引。用来正则匹配要恢复的索引,并且重命名。
    • rename_replacement:将匹配的索引重命名成替代的模式。用来正则匹配要恢复的索引,并且重命名。

注:由于es创建的用户信息会存放在.security-6索引中(不能删除),所以在恢复时要排除该索引名的恢复。

相关推荐
武子康1 小时前
Java-138 深入浅出 MySQL Spring Boot 事务传播机制全解析:从 REQUIRED 到 NESTED 的实战详解 传播机制原理
java·大数据·数据库·spring boot·sql·mysql·事务
青云交1 小时前
Java 大视界 -- Java 大数据在智能安防周界防范系统中的行为分析与预警精度提升(419)
elasticsearch·java 大数据·智能安防周界·flink 实时行为分析·spark mllib异常识别·化工园区安防·yolov5 人体检测
孟意昶2 小时前
Spark专题-第三部分:性能监控与实战优化(2)-分区优化
大数据·分布式·sql·性能优化·spark·big data
AI数据皮皮侠9 小时前
中国各省森林覆盖率等数据(2000-2023年)
大数据·人工智能·python·深度学习·机器学习
大有数据可视化13 小时前
数字孪生背后的大数据技术:时序数据库为何是关键?
大数据·数据库·人工智能
山河亦问安14 小时前
基于Kafka+ElasticSearch+MongoDB+Redis+XXL-Job日志分析系统(学习)
mongodb·elasticsearch·kafka
Elastic 中国社区官方博客14 小时前
CI/CD 流水线与 agentic AI:如何创建自我纠正的 monorepos
大数据·运维·数据库·人工智能·搜索引擎·ci/cd·全文检索
计算机毕设残哥18 小时前
基于Hadoop+Spark的商店购物趋势分析与可视化系统技术实现
大数据·hadoop·python·scrapy·spark·django·dash
IT研究室19 小时前
大数据毕业设计选题推荐-基于大数据的全球能源消耗量数据分析与可视化系统-大数据-Spark-Hadoop-Bigdata
大数据·hadoop·spark·毕业设计·源码·数据可视化·bigdata
武子康19 小时前
大数据-113 Flink 源算子详解:非并行源(Non-Parallel Source)的原理与应用场景
大数据·后端·flink