首页/数据/NoSQL 速查/关闭与打开索引 _close/_open
Elasticsearch89 条

关闭与打开索引 _close/_open

关闭索引后不占用文件句柄与检索资源、不允许读写,但元数据仍在集群状态中;重新打开后分片需要恢复。常用于归档前的临时处理与批量重建。

NoSQL 速查数据更新于 2026-10-13

关闭与打开索引是什么

关闭索引后它不再占用文件句柄与检索资源、不允许读写,但元数据仍保留在集群状态里;重新打开时分片需要做一次恢复。这个机制常用于归档前后的临时处理、批量重建,以及需要修改静态设置时的前置步骤。关闭大量索引会持续占用 master 的任务队列,打开索引则会触发分片恢复,与业务高峰叠加时 IO 压力明显。

基本信息

接口POST /<index>/_close 与 POST /<index>/_open
关闭期间不可搜索、不可写入,磁盘文件保留
查看状态需 ?expand_wildcards=closed 才能列出已关闭索引
静态设置改分析器等设置前需先关闭再打开
所属系统Elasticsearch / OpenSearch

典型使用场景

  • 释放资源:长期不查的历史索引临时关闭,减少文件句柄与内存占用
  • 修改静态设置:改分析器、分片相关配置时需要先关闭
  • 批量重建:关闭旧索引再重建同名索引,避免写入冲突
  • 归档过渡:迁到冷存储前先关闭,降低搜索压力
  • 缩短恢复时间:集群重启前关闭无关索引,减少分片恢复量

关闭与打开

关闭与打开
POST /logs-2023/_close                             # 关闭索引

GET /_cat/indices?v&expand_wildcards=closed        # 确认关闭状态

POST /logs-2023/_open                              # 重新打开(会触发分片恢复)

# 批量关闭时逐批执行,避免 master 任务队列被打满

操作对照

操作效果代价
_close不可读写,释放句柄与检索资源重新打开需要恢复分片
_open恢复可读写分片恢复占用 IO 与网络
关闭状态元数据保留在集群状态需扩大通配符范围才能列出
静态设置关闭后才能修改改错要再走一遍开关流程
批量操作逐个下发持续占用 master 任务队列
需要修改静态设置(分析器、分片相关配置等)时,官方流程就是先关闭索引、改设置、再打开,中间这段时间索引不可用,要安排在业务低谷。
关闭不等于归档:磁盘文件仍然占用,长期关闭大量索引同样要监控空间,删除或迁移仍需按正式流程执行。
打开索引会触发分片恢复并占用 IO 与网络,批量操作时应逐批确认恢复完成再做下一批,避免一次性把所有分片同时唤醒。

易错点

  • 关闭大量索引会持续占用 master 任务队列,批量操作要分批执行
  • 打开索引会触发分片恢复,与业务高峰叠加时 IO 压力明显
  • 关闭索引后常规 _cat/indices 看不到它,容易误以为索引丢失
  • 把关闭当归档手段:磁盘占用没有下降,长期关闭的索引仍需监控容量

数据来源与参考

  • Elasticsearch Guide: Close index API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌