📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

关闭一个或多个索引,使其不再响应读写请求,但保留磁盘数据。

API #

POST /{index}/_close
POST /_close

API 的作用 #

该 API 用于关闭索引。关闭的索引:

  • 不再响应读写请求
  • 不占用内存资源
  • 保留磁盘数据
  • 可以通过 _open API 重新打开

使用场景 #

  • 保留历史数据但不需要频繁访问
  • 释放集群内存资源
  • 暂时禁用某些索引
  • 批量操作前的准备工作

注意:关闭的索引仍占用磁盘空间,并且可能占用集群状态空间(每个索引约占用几KB)。

API 的参数 #

路由参数 #

参数类型是否必填描述
{index}字符串必需要关闭的索引名称。支持:单个索引、逗号分隔的多个索引、通配符表达式

Query String 参数 #

参数类型是否必填默认值描述
master_timeout时间值30s等待主节点操作的超时时间
timeout时间值等待操作完成的超时时间
wait_for_active_shards字符串0等待指定数量的分片变为活跃状态
ignore_unavailable布尔值false是否忽略不存在的索引
allow_no_indices布尔值false当没有匹配的索引时是否允许操作成功

示例 #

关闭单个索引 #

POST /my_index/_close

响应示例:

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

关闭多个索引 #

POST /index1,index2/_close

使用通配符关闭索引 #

POST /logs-2025-*/_close

关闭所有索引 #

POST /*/_close

POST /_all/_close

设置超时时间 #

POST /my_index/_close?timeout=1m&master_timeout=30s

忽略不存在的索引 #

POST /index1,nonexistent/_close?ignore_unavailable=true

等待分片活跃 #

POST /my_index/_close?wait_for_active_shards=all

wait_for_active_shards 参数说明 #

描述
0不等待分片(默认)
all等待所有分片活跃
数字等待指定数量的分片活跃
default使用索引的默认副本数

关闭索引的限制 #

可以通过集群设置控制是否允许关闭索引:

PUT /_cluster/settings
{
  "persistent": {
    "cluster.indices.close.enable": false
  }
}

如果关闭功能被禁用,会返回错误:

closing indices is disabled - set [cluster.indices.close.enable: true] to enable it.
NOTE: closed indices still consume a significant amount of diskspace

使用场景 #

场景 1:归档旧数据 #

# 关闭去年的日志索引以释放内存
POST /logs-2024-*/_close

场景 2:批量操作前准备 #

# 关闭索引
POST /my_index/_close

# 更新设置
PUT /my_index/_settings
{
  "index": {
    "number_of_replicas": 2
  }
}

# 重新打开
POST /my_index/_open

场景 3:暂时禁用索引 #

# 关闭临时不需要的索引
POST /temp_index/_close

# 需要时重新打开
POST /temp_index/_open

关闭索引的影响 #

资源影响
内存释放相关内存
磁盘数据保留,不释放空间
集群状态每个关闭的索引占用约几KB
查询关闭的索引不会被搜索
写入关闭的索引不能写入数据
分片分片被卸载,不占用节点资源

注意事项 #

  1. 磁盘空间:关闭的索引仍占用磁盘空间
  2. 集群状态:大量关闭的索引会增加集群状态大小
  3. 重新打开:重新打开索引需要时间来恢复分片
  4. 生产数据:建议对重要数据先创建快照再关闭
  5. 快照:可以对关闭的索引创建快照
  6. 删除:删除索引比关闭索引更能释放资源

关闭 vs 删除 #

操作磁盘数据内存占用可恢复性
关闭保留释放可重新打开
删除删除释放需从备份恢复

如果不再需要索引数据,建议使用删除操作而非关闭操作。