配置项作用 #
thread_pool.flush.core 配置项用于控制索引刷新线程池的核心线程数。
Flush 线程池用于执行索引刷新操作,将内存中的索引数据写入磁盘,确保持久化。
配置项属性 #
- 配置路径:
thread_pool.flush.core - 数据类型:
Integer(整数) - 默认值:
1 - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(可以动态更新,无需重启)
配置项详解 #
工作机制 #
Flush 线程池架构
线程池类型: SCALING (可伸缩)
┌─────────────────────────────────────┐
│ Flush 线程池 │
├─────────────────────────────────────┤
│ 核心线程: core (默认 1) │
│ 弹性线程: max - core │
│ 最大线程: (CPU核心数 + 1) / 2, 最大5│
└─────────────────────────────────────┘
使用场景:
1. 显式刷新
├── 调用 _refresh API
├── 请求立即刷新
└-- 数据可搜索
2. 定时刷新
├── refresh_interval 到期
├── 自动刷新索引
└-- 保持数据近实时
3. TransLog 提交
├── 内存缓冲满
├── 持久化数据
└-- 防止数据丢失
4. 索引关闭
├── 关闭索引前
├── 确保数据持久化
└-- 安全关闭
max 计算规则 #
max 默认值计算
max = (CPU核心数 + 1) / 2,最大不超过 5
实际值:
CPU 核心: 1
├── (1 + 1) / 2 = 1
└-- max = 1
CPU 核心: 2
├── (2 + 1) / 2 = 1
└-- max = 1
CPU 核心: 4
├── (4 + 1) / 2 = 2
└-- max = 2
CPU 核心: 8
├── (8 + 1) / 2 = 4
└-- max = 4
CPU 核心: 16+
├── 计算值 >= 5
├── 限制: 最大 5
└-- max = 5
core 设置影响 #
core 值的影响分析
core = 1 (默认):
├── 资源占用: 最小 ✅
├── 刷新能力: 标准
├── I/O 压力: 适中
└-- 适用: 大多数场景 ✅
core = 2:
├── 资源占用: 较小
├── 刷新能力: 较高
├── I/O 压力: 较高
└-- 适用: 高写入场景
core > 2:
├── 资源占用: 中等
├── 刷新能力: 高
├-- I/O 压力: 高
└-- 谨慎使用 ⚠️
配置建议 #
默认配置(推荐) #
thread_pool:
flush:
core: 1 # 默认值
建议: 大多数场景使用默认值。
高写入场景 #
thread_pool:
flush:
core: 2
建议: 高吞吐量写入场景。
动态更新 #
PUT /_cluster/settings
{
"transient": {
"thread_pool.flush.core": 2
}
}
代码示例 #
手动刷新索引 #
POST /my_index/_refresh
设置刷新间隔 #
PUT /my_index/_settings
{
"index.refresh_interval": "30s"
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
flush.core | 核心线程数 | 1 |
flush.max | 最大线程数 | (CPU+1)/2, 最大5 |
flush.keep_alive | 线程保活时间 | 5m |
注意事项 #
默认值: 默认值为
1,适用于大多数场景。动态更新: 支持动态更新,无需重启。
I/O 压力: 增加线程会增加磁盘 I/O 压力。
合理设置: 根据写入负载调整。
监控建议: 监控刷新时间和 I/O 使用率。





