配置项作用 #
indices.mapping.max_in_flight_updates 配置项控制允许同时进行的动态映射更新的最大数量。当有多个新字段需要添加到索引时,此配置限制并发更新的数量,避免过度的集群状态更新。
配置项类型 #
该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。
默认值 #
10
是否必需 #
可选配置项(有默认值)
取值范围 #
1 ~ 1000
配置格式 #
# 默认配置
indices.mapping.max_in_flight_updates: 10
# 增加并发数
indices.mapping.max_in_flight_updates: 20
# 减少并发数
indices.mapping.max_in_flight_updates: 5
# 高并发环境
indices.mapping.max_in_flight_updates: 50
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
indices.mapping.dynamic_timeout | 30s | 动态映射更新超时 |
indices.mapping.max_in_flight_updates | 10 | 最大并发映射更新数 |
index.mapper.dynamic | true | 是否启用动态映射 |
工作原理 #
并发映射更新控制:
┌─────────────────────────────────────────────────────────────────┐
│ 并发映射更新控制 │
└─────────────────────────────────────────────────────────────────┘
新字段映射更新请求
│
▼
检查当前并发更新数
│
├── 当前并发数 < max_in_flight_updates
│ │
│ └── 允许执行更新
│ │
│ └── 完成后释放并发槽位
│
└── 当前并发数 >= max_in_flight_updates
│
└── 等待或排队
使用场景 #
1. 默认配置(推荐) #
indices.mapping.max_in_flight_updates: 10
适用于大多数集群配置。
2. 高并发写入环境 #
indices.mapping.max_in_flight_updates: 20
适用场景:
- 大量并发写入
- 频繁新增字段
- 高吞吐量环境
3. 控制集群状态更新 #
indices.mapping.max_in_flight_updates: 5
适用场景:
- 主节点负载高
- 控制更新频率
- 稳定性优先
4. 大规模集群 #
indices.mapping.max_in_flight_updates: 30-50
适用场景:
- 大量节点
- 多数据源
- 需要更高并发
推荐设置建议 #
| 集群规模 | 并发写入量 | 推荐值 | 说明 |
|---|---|---|---|
| 小型 | 低 | 5-10 | 控制更新 |
| 中型 | 中 | 10 | 默认配置 |
| 大型 | 高 | 20-30 | 提高并发 |
| 超大规模 | 很高 | 50-100 | 高并发场景 |
动态配置示例 #
# 更新集群配置
PUT /_cluster/settings
{
"persistent": {
"indices.mapping.max_in_flight_updates": 20
}
}
# 临时增加并发
PUT /_cluster/settings
{
"transient": {
"indices.mapping.max_in_flight_updates": 50
}
}
监控建议 #
# 查看当前配置
GET /_cluster/settings?filter_path=*.indices.mapping.max_in_flight_updates
# 查看待处理任务
GET /_cluster/pending_tasks
# 查看映射状态
GET /_cat/indices?v&h=index,mappings*
注意事项 #
- 动态更新:此配置为动态配置,可在线修改
- 主节点负载:增加并发会增加主节点负载
- 集群状态更新:每个映射更新都需要更新集群状态
- 合理设置:根据集群规模和写入模式调整
- 与 dynamic_timeout 配合:超时时间也影响并发处理能力





