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

配置项作用 #

cluster.indices.close.enable 配置项控制是否允许关闭索引(Index Closing)。关闭索引可以释放其占用的资源,但不删除数据。关闭的索引无法进行读写操作,直到重新打开。

配置项类型 #

该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。

默认值 #

true(允许关闭索引)

是否必需 #

可选配置项(有默认值)

取值范围 #

true  - 允许关闭索引
false - 禁止关闭索引

配置格式 #

# 默认配置(允许关闭)
cluster.indices.close.enable: true

# 禁止关闭索引
cluster.indices.close.enable: false

相关配置项 #

配置项默认值说明
cluster.indices.close.enabletrue允许关闭索引
cluster.indices.tombstones.size500墓碑记录数量

工作原理 #

索引关闭机制:

┌─────────────────────────────────────────────────────────────────┐
│                    索引关闭/打开流程                              │
└─────────────────────────────────────────────────────────────────┘

关闭索引请求
    │
    ▼
检查 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

注意事项 #

  1. 动态更新:此配置为动态配置,可在线修改
  2. 资源释放:关闭索引可以显著释放内存
  3. 打开延迟:重新打开索引需要时间加载数据
  4. 集群状态:关闭的索引仍在集群状态中
  5. 数据安全:关闭索引不会删除数据
  6. 分片分配:打开索引需要重新分配分片