打开索引 API

编辑

打开已关闭的索引。对于数据流,此 API 会打开任何已关闭的后备索引。

resp = client.indices.open(
    index="my-index-000001",
)
print(resp)
response = client.indices.open(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.open({
  index: "my-index-000001",
});
console.log(response);
POST /my-index-000001/_open

请求

编辑

POST /<target>/_open

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须具有目标数据流、索引或别名的 manage 索引权限

描述

编辑

您可以使用打开索引 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
匹配隐藏的数据流和隐藏的索引。必须与 openclosed 或两者组合使用。
none
不接受通配符模式。

默认为 closed

ignore_unavailable
(可选,布尔值)如果为 false,则当请求的目标是丢失或关闭的索引时,请求会返回错误。默认为 false
wait_for_active_shards

(可选,字符串)在继续操作之前必须处于活动状态的每个分片的副本数。设置为 all 或任何非负整数,最大值为索引中每个分片的总副本数(number_of_replicas+1)。默认为 1,这意味着仅等待每个主分片处于活动状态。

请参阅活动分片

master_timeout
(可选,时间单位)等待主节点的时间。如果主节点在超时过期之前不可用,则请求失败并返回错误。默认为 30s。也可以设置为 -1,表示请求永远不应超时。
timeout
(可选,时间单位)在更新集群元数据后,等待集群中所有相关节点响应的时间。如果在超时过期之前未收到任何响应,则集群元数据更新仍然适用,但响应将指示未完全确认。默认为 30s。也可以设置为 -1,表示请求永远不应超时。

示例

编辑

以下请求重新打开名为 my-index-000001 的已关闭索引。

resp = client.indices.open(
    index="my-index-000001",
)
print(resp)
response = client.indices.open(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.open({
  index: "my-index-000001",
});
console.log(response);
POST /my-index-000001/_open

API 返回以下响应

{
  "acknowledged" : true,
  "shards_acknowledged" : true
}