从快照仓库中删除一个或多个快照。
API 格式 #
DELETE /_snapshot/{repository}/{snapshot}
API 作用 #
该 API 用于从快照仓库中删除快照:
- 删除快照并清理所有关联文件
- 保留与其他快照共享的文件
- 支持同时删除多个快照
API 参数 #
路径参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
{repository} | String | 是 | - | 快照仓库名称 |
{snapshot} | String | 是 | - | 快照名称,支持逗号分隔的多个快照 |
查询参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
master_timeout | Time | 否 | 30s | 等待主节点连接的超时时间 |
请求示例 #
删除单个快照 #
DELETE /_snapshot/my_backup/snapshot_1
删除多个快照 #
DELETE /_snapshot/my_backup/snapshot_1,snapshot_2,snapshot_3
设置主节点超时 #
DELETE /_snapshot/my_backup/snapshot_1?master_timeout=5m
响应示例 #
成功响应 #
{
"acknowledged": true
}
响应字段说明 #
| 字段 | 类型 | 描述 |
|---|---|---|
acknowledged | Boolean | 请求是否被集群确认。true 表示快照删除已成功启动 |
错误条件 #
API 可能在以下情况下失败:
| 错误 | 描述 |
|---|---|
| 仓库不存在 | 指定的快照仓库不存在 |
| 快照不存在 | 指定的快照不存在 |
| 超时 | 等待主节点连接超时 |
| 权限不足 | 没有执行此操作的权限 |
| 快照正在使用 | 快照当前正在被其他操作使用 |
| 仓库已关闭 | 仓库已关闭或不可用 |
实现细节 #
多快照支持 #
API 支持通过逗号分隔快照名称同时删除多个快照:
DELETE /_snapshot/my_repo/snap1,snap2,snap3
文件清理策略 #
- 删除所有与快照关联的文件
- 保留共享文件:与其他至少一个现有快照共享的文件不会被删除
使用场景 #
- 存储管理:删除过期快照释放存储空间
- 备份维护:定期清理旧快照
- 快照更新:删除旧快照后创建新的完整快照
- 错误恢复:删除损坏或失败的快照
注意事项 #
- 不可恢复:删除后快照无法恢复
- 共享文件:与其他快照共享的文件会被保留
- 正在进行的快照:正在创建中的快照无法删除
- 存储释放:删除后存储空间可能不会立即释放
相关操作 #
- POST /_snapshot/{repository}/{snapshot}:创建快照
- GET /_snapshot/{repository}/{snapshot}:查询快照信息
- GET /_snapshot/{repository}:查询仓库信息
- POST /_snapshot/{repository}/_cleanup:清理仓库
实现文件 #
- REST 处理器:
RestDeleteSnapshotAction.java - 请求类:
DeleteSnapshotRequest.java - 响应类:
AcknowledgedResponse.java





