ElasticSearch 6.4快照创建与Azure存储配置技术咨询
Elasticsearch 6.x 快照存储到Azure的API指南及默认存储说明
一、关于默认快照存储的疑问
首先明确:Elasticsearch 6.4本身没有预配置的快照仓库,如果不手动注册仓库就尝试创建快照,会直接报错。
如果你之前配置了本地文件系统仓库(比如通过elasticsearch.yml里的path.repo指定了本地目录,然后注册了仓库),那快照确实会存在VM的本地磁盘中——这种情况下,一旦VM或磁盘损坏,快照也会跟着丢失,这也是为什么你需要把快照存到外部存储的核心原因。
二、将指定索引快照存储到Azure存储的API步骤
要实现这个需求,需要分两步:先注册Azure存储作为快照仓库,再创建指定索引的快照。
1. 注册Azure存储快照仓库
首先你需要在Azure上完成前置准备:
- 创建一个Azure存储账户
- 在存储账户下创建一个Blob容器(专门用于存放快照)
- 获取存储账户的访问密钥(在Azure门户的存储账户→「访问密钥」页面可以找到)
然后用Elasticsearch的REST API注册仓库:
PUT /_snapshot/azure_snapshot_repo { "type": "azure", "settings": { "account": "你的Azure存储账户名", "container": "你的Blob容器名", "key": "你的存储账户访问密钥", "compress": true, # 可选,开启快照压缩节省存储空间 "chunk_size": "100mb" # 可选,大文件分块大小,适合大容量索引 } }
调用成功后,会返回{"acknowledged": true}。你可以用GET /_snapshot/azure_snapshot_repo来验证仓库是否注册成功。
2. 创建指定索引的快照
仓库注册完成后,就可以创建指定索引(比如index01)的快照了:
PUT /_snapshot/azure_snapshot_repo/daily_snapshot_20240520 # 快照名建议按日期命名,方便后续管理 { "indices": "index01", # 指定要快照的索引,多个索引用逗号分隔,比如"index01,index02" "ignore_unavailable": true, # 可选,忽略不存在的索引,避免报错 "include_global_state": false, # 可选,是否包含集群全局状态,按需选择 "wait_for_completion": true # 可选,设为true则API会等待快照完成再返回结果,适合手动测试;自动化场景建议设为false,后台异步执行 }
如果wait_for_completion设为true,成功后会返回包含快照详情的JSON;设为false的话,会先返回{"accepted": true},之后可以用GET /_snapshot/azure_snapshot_repo/daily_snapshot_20240520/_status查看快照进度。
三、额外实用建议
- 自动化每日快照:可以在VM上用cron定时任务,或者用Elasticsearch Curator(6.x版本推荐工具)来自动执行快照API,比如每天凌晨1点创建当天的快照。
- 快照验证:定期执行
GET /_snapshot/azure_snapshot_repo/[快照名]来检查快照状态,确保快照完整可用。 - 恢复测试:建议定期在测试环境用快照恢复数据,验证恢复流程是否正常,避免真的需要恢复时出问题。
- 权限安全:Azure存储的访问密钥要妥善保管,不要硬编码在脚本里,可以考虑用Azure的托管身份(如果VM启用了的话)来替代密钥,提升安全性。
内容的提问来源于stack exchange,提问作者Stpete111
相关产品推荐
相关产品推荐

