关闭与打开索引是什么
关闭索引后它不再占用文件句柄与检索资源、不允许读写,但元数据仍保留在集群状态里;重新打开时分片需要做一次恢复。这个机制常用于归档前后的临时处理、批量重建,以及需要修改静态设置时的前置步骤。关闭大量索引会持续占用 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 与网络,批量操作时应逐批确认恢复完成再做下一批,避免一次性把所有分片同时唤醒。