恢复快照
1.0 版引入
恢复集群或指定数据流和索引的快照。
-
有关索引和集群的信息,请参阅OpenSearch 简介。
-
有关数据流的信息,请参阅数据流。
如果集群中已经存在与您要恢复的快照同名的打开索引,则必须关闭、删除或重命名这些索引。有关重命名索引的信息,请参阅示例请求。有关关闭索引的信息,请参阅关闭索引。
端点
POST _snapshot/<repository>/<snapshot>/_restore
路径参数
参数 | 数据类型 | 描述 |
---|---|---|
存储库 | 字符串 | 包含要恢复的快照的存储库。 |
快照 | 字符串 | 要恢复的快照。 |
查询参数
参数 | 数据类型 | 描述 |
---|---|---|
wait_for_completion | 布尔型 | 是否等待快照恢复完成再继续。 |
请求正文字段
所有请求正文参数都是可选的。
参数 | 数据类型 | 描述 |
---|---|---|
ignore_unavailable | 布尔型 | 如何处理丢失或已关闭的数据流或索引。如果为 false ,则请求将对任何丢失或已关闭的数据流或索引返回错误。如果为 true ,则请求将忽略索引中丢失或已关闭的数据流和索引。默认为 false 。 |
ignore_index_settings | 布尔型 | 要从快照中排除恢复的索引设置的逗号分隔列表。 |
include_aliases | 布尔型 | 如何处理原始快照中的索引别名。如果为 true ,则恢复原始快照中的索引别名。如果为 false ,则别名及其相关索引不会被恢复。默认为 true 。 |
include_global_state | 布尔型 | 是否恢复当前集群状态1。如果为 false ,则不恢复集群状态。如果为 true,则恢复当前集群状态。默认为 false 。 |
index_settings | 字符串 | 要在所有恢复的索引中添加或更改的设置的逗号分隔列表。使用此参数可以在快照恢复期间覆盖索引设置。对于数据流,这些索引设置将应用于恢复的后端索引。 |
索引 | 字符串 | 要从快照恢复的数据流和索引的逗号分隔列表。支持多索引语法。默认情况下,恢复操作包括快照中的所有数据流和索引。如果提供了此参数,则恢复操作仅包括您指定的数据流和索引。 |
partial | 布尔型 | 如果快照中的索引没有所有主分片可用,恢复操作将如何执行。如果为 false ,则如果快照中的任何索引没有所有主分片可用,整个恢复操作将失败。如果为 true ,则允许恢复分片不可用的索引的部分快照。仅恢复快照中成功包含的分片。所有缺失的分片都将被重新创建为空。默认情况下,如果快照中包含的一个或多个索引没有所有主分片可用,整个恢复操作将失败。要更改此行为,请将 partial 设置为 true 。默认为 false 。 |
rename_pattern | 字符串 | 要应用于已恢复数据流和索引的模式。与重命名模式匹配的数据流和索引将根据 rename_replacement 设置进行重命名。重命名模式根据支持引用原始文本的正则表达式来应用。 如果两个或多个数据流或索引重命名为相同的名称,则请求将失败。如果重命名已恢复的数据流,则其后端索引也会被重命名。例如,如果将日志数据流重命名为 recovered-logs ,则后端索引 .ds-logs-1 将重命名为 .ds-recovered-logs-1 。如果重命名已恢复的流,请确保索引模板与新流名称匹配。如果没有匹配的索引模板名称,则流无法滚动,并且不会创建新的后端索引。 |
rename_replacement | 字符串 | 重命名替换字符串。 |
rename_alias_pattern | 字符串 | 要应用于已恢复别名的模式。与重命名模式匹配的别名将根据 rename_alias_replacement 设置进行重命名。重命名模式根据支持引用原始文本的正则表达式来应用。 如果两个或多个别名重命名为相同的名称,则这些别名将合并为一个。 |
rename_alias_replacement | 字符串 | 别名的重命名替换字符串。 |
source_remote_store_repository | 字符串 | 要恢复的源索引的远程存储库名称。如果未提供,快照恢复 API 将使用创建快照时注册的存储库。 |
wait_for_completion | 布尔型 | 是否在恢复操作完成后返回响应。如果为 false ,则请求在恢复操作初始化时返回响应。如果为 true ,则请求在恢复操作完成时返回响应。默认为 false 。 |
storage_type | local 表示所有快照元数据和索引数据都将下载到本地存储。remote_snapshot 表示快照元数据将下载到集群,但远程存储库仍将是索引数据的权威存储。数据将根据需要下载和缓存以服务查询。集群中至少有一个节点必须配置了搜索角色,才能使用 remote_snapshot 类型恢复快照。默认为 local 。 |
1集群状态包括
- 持久集群设置
- 索引模板
- 传统索引模板
- 摄入管道
- 索引生命周期策略
请求示例
以下请求将从 my-first-snapshot
恢复 opendistro-reports-definitions
索引。rename_pattern
和 rename_replacement
组合将导致索引重命名为 opendistro-reports-definitions_restored
,因为集群中不允许存在重复的打开索引名称。
POST /_snapshot/my-opensearch-repo/my-first-snapshot/_restore
{
"indices": "opendistro-reports-definitions",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "$1_restored",
"include_aliases": false
}
示例响应
成功后,响应返回以下 JSON 对象
{
"snapshot" : {
"snapshot" : "my-first-snapshot",
"indices" : [ ],
"shards" : {
"total" : 0,
"failed" : 0,
"successful" : 0
}
}
}
除了快照名称,所有属性都为空或 0
。这是因为快照生成后对卷所做的任何更改都将丢失。但是,如果调用获取快照 API 来检查快照,将返回一个完全填充的快照对象。
响应正文字段
字段 | 数据类型 | 描述 |
---|---|---|
快照 | 字符串 | 快照名称。 |
索引 | 数组 | 快照中的索引。 |
分片 | 对象 | 创建的分片总数以及成功和失败的分片数量。 |
如果快照中的打开索引已存在于集群中,并且您未删除、关闭或重命名它们,则 API 将返回以下错误:
{
"error" : {
"root_cause" : [
{
"type" : "snapshot_restore_exception",
"reason" : "[my-opensearch-repo:my-first-snapshot/dCK4Qth-TymRQ7Tu7Iga0g] cannot restore index [.opendistro-reports-definitions] because an open index with same name already exists in the cluster. Either close or delete the existing index or restore the index under a different name by providing a rename pattern and replacement name"
}
],
"type" : "snapshot_restore_exception",
"reason" : "[my-opensearch-repo:my-first-snapshot/dCK4Qth-TymRQ7Tu7Iga0g] cannot restore index [.opendistro-reports-definitions] because an open index with same name already exists in the cluster. Either close or delete the existing index or restore the index under a different name by providing a rename pattern and replacement name"
},
"status" : 500
}