关闭索引 API编辑

关闭索引。

response = client.indices.close(
  index: 'my-index-000001'
)
puts response
POST /my-index-000001/_close

请求编辑

POST /<index>/_close

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,您必须对目标索引或索引别名具有 manage 索引权限

描述编辑

您可以使用关闭索引 API 来关闭打开的索引。

关闭的索引被阻止进行读写操作,并且不允许所有打开的索引允许的操作。无法在关闭的索引中索引文档或搜索文档。这使得关闭的索引不必维护用于索引或搜索文档的内部数据结构,从而减少了集群的开销。

打开或关闭索引时,主节点负责重新启动索引分片以反映索引的新状态。然后,分片将经历正常的恢复过程。集群会自动复制打开/关闭索引的数据,以确保始终安全地保留足够的分片副本。

您可以打开和关闭多个索引。如果请求明确引用了缺失的索引,则会抛出错误。可以使用 ignore_unavailable=true 参数禁用此行为。

默认情况下,您必须明确命名要打开或关闭的索引。要使用 _all* 或其他通配符表达式打开或关闭索引,请将 action.destructive_requires_name 设置更改为 false。此设置也可以通过集群更新设置 API 更改。

关闭的索引会占用大量磁盘空间,这可能会在托管环境中造成问题。可以通过集群设置 API 将 cluster.indices.close.enable 设置为 false 来禁用关闭索引。默认值为 true

路径参数编辑

<index>

(可选,字符串) 用于限制请求的索引名称的逗号分隔列表或通配符表达式。

要关闭所有索引,请使用 _all*。默认情况下,您必须明确命名要关闭的索引。要使用 _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
不接受通配符模式。

默认为 open

ignore_unavailable
(可选,布尔值) 如果为 false,则如果请求针对缺失或关闭的索引,则请求将返回错误。默认为 false
wait_for_active_shards

(可选,字符串) 在继续操作之前必须处于活动状态的分片副本数量。设置为 all 或任何正整数,直到索引中的分片总数 (number_of_replicas+1)。默认值:1,主分片。

请参阅 活动分片

master_timeout
(可选,时间单位) 等待主节点的时长。如果在超时时间到期之前主节点不可用,则请求将失败并返回错误。默认为 30s。也可以设置为 -1,表示请求永远不会超时。
timeout
(可选,时间单位) 等待响应的时长。如果在超时时间到期之前未收到响应,则请求将失败并返回错误。默认为 30s

示例编辑

以下示例演示如何关闭索引

response = client.indices.close(
  index: 'my-index-000001'
)
puts response
POST /my-index-000001/_close

API 返回以下响应

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "indices": {
    "my-index-000001": {
      "closed": true
    }
  }
}