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

打开一个或多个已关闭的索引,使其恢复正常功能。

API #

POST /{index}/_open
POST /_all/_open

API 的作用 #

该 API 用于打开已关闭的索引。关闭的索引不会响应读写请求,也不会占用集群资源。使用 _open API 可以:

  • 重新打开关闭的索引
  • 恢复索引的读写操作
  • 重新分配索引的分片
  • 使索引可以正常被搜索

关闭 vs 打开索引 #

状态描述
打开 (Open)索引正常工作,可以读写和搜索
关闭 (Close)索引不响应请求,不占用内存,但保留磁盘数据

API 的参数 #

路由参数 #

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

Query String 参数 #

参数类型是否必填默认值描述
timeout时间值显式操作超时时间
master_timeout时间值连接到主节点的超时时间
ignore_unavailable布尔值false是否忽略不可用(缺失或关闭)的索引
allow_no_indices布尔值false当通配符没有匹配到索引时是否忽略
expand_wildcards枚举值open如何展开通配符。可选值:openclosedall
wait_for_active_shards字符串1在操作返回之前等待的活跃分片数

示例 #

打开单个索引 #

POST /my_index/_open

响应示例:

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

打开多个索引 #

POST /index1,index2/_open

使用通配符打开索引 #

POST /logs-*/_open

打开所有索引 #

POST /_all/_open

POST /*/_open

等待所有分片活跃 #

POST /my_index/_open?wait_for_active_shards=all

等待指定数量的分片活跃 #

POST /my_index/_open?wait_for_active_shards=2

设置超时时间 #

POST /my_index/_open?timeout=5m

只打开关闭的索引 #

POST /*/_open?expand_wildcards=closed

忽略不存在的索引 #

POST /index1,nonexistent/_open?ignore_unavailable=true

组合参数使用 #

POST /logs-*/_open?expand_wildcards=closed&wait_for_active_shards=all&timeout=2m

expand_wildcards 参数说明 #

描述
open只展开到打开的索引(默认)
closed只展开到关闭的索引
all展开到所有索引(打开和关闭)

wait_for_active_shards 参数说明 #

描述
1default只等待主分片变为活跃(默认)
all等待所有分片(主分片和副本)都活跃
数字等待指定数量的分片变为活跃

响应字段说明 #

字段类型描述
acknowledged布尔值操作是否被主节点确认
shards_acknowledged布尔值是否所有相关分片在操作返回前变为活跃状态

使用场景 #

场景 1:重新启用归档索引 #

# 打开旧的日志索引以便查询
POST /logs-2025-*/_open

场景 2:批量操作后恢复索引 #

# 关闭索引进行配置更新
POST /my_index/_close

# 更新设置
PUT /my_index/_settings
{
  "index": {
    "refresh_interval": "5s"
  }
}

# 重新打开索引
POST /my_index/_open

场景 3:分阶段恢复索引 #

# 只打开部分索引以避免资源压力
POST /archive-2025-01/_open?wait_for_active_shards=all

注意事项 #

  1. 资源消耗:打开索引会重新分配分片并占用内存
  2. 集群健康:打开大量索引可能影响集群健康状态
  3. 分片恢复:打开索引后需要等待分片恢复完成才能正常使用
  4. 副本分配:副本分片可能需要时间来完成分配
  5. 性能影响:建议在低峰期打开大量索引