打开索引 API
编辑打开索引 API编辑
打开一个已关闭的索引。对于数据流,该 API 会打开所有已关闭的备份索引。
response = client.indices.open( index: 'my-index-000001' ) puts response
POST /my-index-000001/_open
请求编辑
POST /<target>/_open
描述编辑
您可以使用打开索引 API 重新打开已关闭的索引。如果请求针对数据流,则该请求会重新打开数据流的任何已关闭的备份索引。
已关闭的索引被阻止进行读写操作,并且不允许所有打开的索引允许的操作。无法在已关闭的索引中索引文档或搜索文档。这使得已关闭的索引不必维护用于索引或搜索文档的内部数据结构,从而减少了集群的开销。
在打开或关闭索引时,主节点负责重新启动索引分片以反映索引的新状态。然后,分片将经历正常的恢复过程。集群会自动复制打开/关闭索引的数据,以确保始终安全地保留足够的分片副本。
您可以打开和关闭多个索引。如果请求明确引用了缺失的索引,则会抛出错误。可以使用 ignore_unavailable=true
参数禁用此行为。
默认情况下,您必须明确命名要打开或关闭的索引。要使用 _all
、*
或其他通配符表达式打开或关闭索引,请将 action.destructive_requires_name
设置更改为 false
。此设置也可以通过集群更新设置 API 更改。
已关闭的索引会占用大量磁盘空间,这可能会在托管环境中造成问题。可以通过集群设置 API 将 cluster.indices.close.enable
设置为 false
来禁用关闭索引。默认值为 true
。
等待活动分片编辑
因为打开或关闭索引会分配其分片,所以索引创建上的 wait_for_active_shards
设置也适用于 _open
和 _close
索引操作。
路径参数编辑
-
<target>
-
(可选,字符串) 用于限制请求的数据流、索引和别名的逗号分隔列表。支持通配符 (
*
)。默认情况下,您必须明确命名用于限制请求的索引。要使用
_all
、*
或其他通配符表达式限制请求,请将action.destructive_requires_name
设置更改为false
。您可以在elasticsearch.yml
文件中或使用 集群更新设置 API 更新此设置。
查询参数编辑
-
allow_no_indices
-
(可选,布尔值) 如果为
false
,则如果任何通配符表达式、索引别名 或_all
值仅针对缺失或已关闭的索引,则请求将返回错误。即使请求针对其他打开的索引,此行为也适用。例如,如果索引以foo
开头,但没有索引以bar
开头,则针对foo*,bar*
的请求将返回错误。默认为
true
。 -
expand_wildcards
-
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,则此参数决定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden
。有效值为-
all
- 匹配任何数据流或索引,包括 隐藏 的数据流或索引。
-
open
- 匹配打开的、非隐藏的索引。也匹配任何非隐藏的数据流。
-
closed
- 匹配已关闭的、非隐藏的索引。也匹配任何非隐藏的数据流。数据流无法关闭。
-
hidden
- 匹配隐藏的数据流和隐藏的索引。必须与
open
、closed
或两者结合使用。 -
none
- 不接受通配符模式。
默认为
closed
。 -
-
ignore_unavailable
- (可选,布尔值) 如果为
false
,则如果请求针对缺失或已关闭的索引,则请求将返回错误。默认为false
。 -
wait_for_active_shards
-
(可选,字符串) 在继续操作之前必须处于活动状态的分片副本数量。设置为
all
或任何正整数,直到索引中的分片总数 (number_of_replicas+1
)。默认值:1,主分片。请参阅 活动分片。
-
master_timeout
- (可选,时间单位) 等待主节点的时间段。如果在超时时间到期之前主节点不可用,则请求将失败并返回错误。默认为
30s
。也可以设置为-1
,表示请求永远不会超时。 -
timeout
- (可选,时间单位) 等待响应的时间段。如果在超时时间到期之前没有收到响应,则请求将失败并返回错误。默认为
30s
。
示例编辑
以下请求重新打开一个名为 my-index-000001
的已关闭索引。
response = client.indices.open( index: 'my-index-000001' ) puts response
POST /my-index-000001/_open
该 API 返回以下响应
{ "acknowledged" : true, "shards_acknowledged" : true }