--- title: "快照不存在 (snapshot_missing_exception) 错误排查与解决" date: 2026-03-22 lastmod: 2026-03-22 description: "snapshot_missing_exception 表示请求的快照在仓库中不存在,可能由快照名称拼写错误、快照被删除或仓库名称错误引起。" tags: ["快照", "备份", "数据恢复"] summary: "为什么这个错误发生 # snapshot_missing_exception 表示请求的快照在仓库中不存在。 这个错误可能由以下原因引起: 快照名称拼写错误:请求中的快照名称输入错误 快照被删除:快照已被删除 仓库名称错误:快照存在于其他仓库中 快照未完成:快照创建还在进行中 大小写不匹配:快照名称区分大小写 仓库位置变更:仓库位置变更后快照不可用 如何修复这个错误 # 1. 列出所有快照 # # 查看仓库中的所有快照 GET /_snapshot/<repository>/_all # 使用通配符查询 GET /_snapshot/<repository>/snap-*?verbose 2. 验证快照名称 # # 检查快照是否存在 GET /_snapshot/<repository>/<snapshot-name> # 列出所有仓库和快照 GET /_cat/snapshots?v 3. 查看快照状态 # # 查看正在进行的快照 GET /_snapshot/<repository>/_status # 检查快照是否完成 GET /_snapshot/<repository>/<snapshot-name>?verbose 4. 使用正确的仓库名称 # # 列出所有仓库 GET /_snapshot?verbose # 在正确的仓库中查找快照 GET /_snapshot/<correct_repository>/_all 5. 等待快照完成 # # 如果快照正在进行,等待完成 GET /_snapshot/<repository>/<snapshot-name>?" --- ## 为什么这个错误发生 `snapshot_missing_exception` 表示请求的快照在仓库中不存在。 这个错误可能由以下原因引起: 1. **快照名称拼写错误**:请求中的快照名称输入错误 2. **快照被删除**:快照已被删除 3. **仓库名称错误**:快照存在于其他仓库中 4. **快照未完成**:快照创建还在进行中 5. **大小写不匹配**:快照名称区分大小写 6. **仓库位置变更**:仓库位置变更后快照不可用 ## 如何修复这个错误 ### 1. 列出所有快照 ```bash # 查看仓库中的所有快照 GET /_snapshot//_all # 使用通配符查询 GET /_snapshot//snap-*?verbose ``` ### 2. 验证快照名称 ```bash # 检查快照是否存在 GET /_snapshot// # 列出所有仓库和快照 GET /_cat/snapshots?v ``` ### 3. 查看快照状态 ```bash # 查看正在进行的快照 GET /_snapshot//_status # 检查快照是否完成 GET /_snapshot//?verbose ``` ### 4. 使用正确的仓库名称 ```bash # 列出所有仓库 GET /_snapshot?verbose # 在正确的仓库中查找快照 GET /_snapshot//_all ``` ### 5. 等待快照完成 ```bash # 如果快照正在进行,等待完成 GET /_snapshot//?wait_for_completion=true ``` ### 6. 创建新快照 ```bash # 创建新的快照 PUT /_snapshot// { "indices": "", "wait_for_completion": true } ``` ### 7. 从其他快照恢复 ```bash # 如果原快照不存在,使用其他可用的快照 POST /_snapshot///_restore { "indices": "" } ``` ### 8. 检查快照历史 ```bash # 查看已删除的快照信息 # 需要检查日志或其他记录 grep "snapshot" /path/to/easysearch/logs/easysearch.log | grep -i "delete" ``` ### 9. 检查 SLM 策略 ```bash # 查看快照生命周期策略 GET /_slm/policy/*?verbose # 查看最近的快照 GET /_slm/status ``` ### 10. 验证仓库完整性 ```bash # 验证仓库 POST /_snapshot//_verify # 检查仓库文件列表 GET /_snapshot//_all?verbose ``` ### 预防措施 - 使用有意义的快照命名规范 - 在删除快照前确认不再需要 - 记录重要快照的名称和日期 - 使用 SLM 自动化快照管理 - 定期验证快照完整性 - 保留多个版本的快照 - 记录快照对应的索引状态 - 在删除快照前进行验证