配置项作用 #
cluster.indices.close.enable 配置项控制是否允许关闭索引(Index Closing)。关闭索引可以释放其占用的资源,但不删除数据。关闭的索引无法进行读写操作,直到重新打开。
配置项类型 #
该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。
默认值 #
true(允许关闭索引)
是否必需 #
可选配置项(有默认值)
取值范围 #
true - 允许关闭索引
false - 禁止关闭索引
配置格式 #
# 默认配置(允许关闭)
cluster.indices.close.enable: true
# 禁止关闭索引
cluster.indices.close.enable: false
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
cluster.indices.close.enable | true | 允许关闭索引 |
cluster.indices.tombstones.size | 500 | 墓碑记录数量 |
工作原理 #
索引关闭机制:
┌─────────────────────────────────────────────────────────────────┐
│ 索引关闭/打开流程 │
└─────────────────────────────────────────────────────────────────┘
关闭索引请求
│
▼
检查 close.enable 配置
│
├── true(允许)
│ │
│ └── 执行关闭操作
│ ├── 释放内存资源
│ ├── 关闭分片
│ ├── 停止维护操作
│ └── 保留数据
│
└── false(禁止)
│
└── 拒绝操作
返回错误:
"closing indices is disabled"
打开索引请求
│
└── 执行打开操作
├── 加载分片
├── 恢复内存结构
└── 允许读写操作
关闭索引的影响 #
关闭索引后:
释放的资源:
✓ 内存缓冲区
✓ 字段数据缓存
✓ 查询缓存
✓ 文件句柄
✓ 线程资源
保留的内容:
✓ 磁盘数据
✓ 元数据
✓ 索引设置
✓ 映射定义
不可操作:
✗ 读写文档
✗ 搜索查询
✗ 聚合分析
✗ 更新映射
使用场景 #
1. 默认配置(推荐) #
cluster.indices.close.enable: true
适用场景:
- 大多数集群配置
- 需要保存历史数据
- 定期访问归档数据
- 资源优化需求
2. 禁止关闭索引 #
cluster.indices.close.enable: false
适用场景:
- 防止误操作
- 数据始终可用
- 简化运维管理
- 自动化环境
3. 临时禁止 #
# 临时禁止关闭索引
PUT /_cluster/settings
{
"transient": {
"cluster.indices.close.enable": false
}
}
适用场景:
- 维护期间保护数据
- 防止批量关闭
- 临时安全措施
推荐设置建议 #
| 场景 | 推荐值 | 说明 |
|---|---|---|
| 日志归档 | true | 释放资源 |
| 历史数据 | true | 节省成本 |
| 生产热数据 | false | 保持可用 |
| 测试环境 | true | 灵活管理 |
| 自动化运维 | false | 简化管理 |
关闭/打开索引操作 #
关闭索引:
POST /logs-2023-01/_close
响应:
{
"acknowledged": true,
"shards_acknowledged": true
}
打开索引:
POST /logs-2023-01/_open
响应:
{
"acknowledged": true,
"shards_acknowledged": true
}
批量关闭:
POST /logs-2023-*/_close
批量打开:
POST /logs-2023-*/_open
使用场景详解 #
1. 日志归档场景
每日日志索引:
├── logs-2023-01-01 (30 天前)
├── logs-2023-01-02 (29 天前)
└── ...
策略:
├── 7 天前的索引 → 关闭
├── 保留磁盘数据
├── 释放内存资源
└── 需要时再打开
配置:
cluster.indices.close.enable: true
2. 历史数据管理
月度报告索引:
├── report-2023-01
├── report-2023-02
└── ...
策略:
├── 上月报告 → 关闭
├── 节省资源
└── 季度/年度查询时打开
3. 资源优化
问题:
├── 集群内存不足
├── 打开索引过多
└── 性能下降
解决:
├── 关闭不常用索引
├── 释放内存
└── 提升性能
动态配置示例 #
# 禁止关闭索引
PUT /_cluster/settings
{
"transient": {
"cluster.indices.close.enable": false
}
}
# 允许关闭索引
PUT /_cluster/settings
{
"transient": {
"cluster.indices.close.enable": true
}
}
# 查看当前配置
GET /_cluster/settings?filter_path=*.cluster.indices.close.enable
监控建议 #
# 查看当前配置
GET /_cluster/settings?filter_path=*.cluster.indices.close.enable
# 查看所有索引状态
GET /_cat/indices?v&h=index,status
# 查看关闭的索引
GET /_cat/indices?v&h=index,status | grep CLOSE
# 查看集群健康
GET /_cluster/health
# 查看分片分配
GET /_cat/shards?v&h=index,shard,prirep,state
与删除索引的区别 #
关闭索引 vs 删除索引:
关闭索引:
- 数据保留在磁盘
- 可以重新打开
- 释放内存资源
- 不影响集群元数据
- 可快速恢复
删除索引:
- 数据从磁盘删除
- 无法恢复(除非有快照)
- 释放磁盘和内存
- 从集群元数据移除
- 需要重新创建和导入
选择建议:
- 需要保留数据 → 关闭索引
- 不再需要数据 → 删除索引
- 偶尔访问 → 关闭索引
- 节省磁盘 → 删除索引
最佳实践 #
索引生命周期管理:
1. 热数据阶段 (0-7 天)
- 索引状态: OPEN
- 高频访问
- 优化性能
2. 温数据阶段 (7-30 天)
- 索引状态: OPEN/CLOSE
- 中频访问
- 按需打开
3. 冷数据阶段 (30-90 天)
- 索引状态: CLOSE
- 低频访问
- 节省资源
4. 归档阶段 (90 天以上)
- 索引状态: CLOSE 或 DELETE
- 极少访问
- 考虑快照后删除
错误处理 #
禁止关闭索引后的错误:
尝试关闭索引:
POST /test-index/_close
错误响应:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "closing indices is disabled"
}
]
}
}
解决措施:
# 临时允许关闭索引
PUT /_cluster/settings
{
"transient": {
"cluster.indices.close.enable": true
}
}
# 然后再关闭索引
POST /test-index/_close
注意事项 #
- 动态更新:此配置为动态配置,可在线修改
- 资源释放:关闭索引可以显著释放内存
- 打开延迟:重新打开索引需要时间加载数据
- 集群状态:关闭的索引仍在集群状态中
- 数据安全:关闭索引不会删除数据
- 分片分配:打开索引需要重新分配分片





