配置项作用 #
search.max_keep_alive 配置项控制滚动搜索上下文(Scroll Context)的最大保活时间。滚动搜索允许客户端分批获取大量结果集,此配置限制一个滚动上下文可以保持活跃的最大时间。
配置项类型 #
该配置项为动态配置,可以在运行时通过集群设置 API 进行修改。
默认值 #
24h
是否必需 #
可选配置项(有默认值)
取值范围 #
0 ~ 正无穷
配置格式 #
# 默认配置
search.max_keep_alive: 24h
# 增加最大时间
search.max_keep_alive: 48h
# 减少最大时间
search.max_keep_alive: 12h
# 快速清理
search.max_keep_alive: 1h
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
search.max_keep_alive | 24h | 最大保活时间 |
search.default_keep_alive | 5m | 默认保活时间 |
search.max_open_scroll_context | 500 | 最大并发滚动上下文数 |
工作原理 #
滚动上下文生命周期:
┌─────────────────────────────────────────────────────────────────┐
│ 滚动上下文生命周期 │
└─────────────────────────────────────────────────────────────────┘
创建滚动搜索
│
├── 设置 keep_alive(默认 5m)
│
├── 每次 scroll 请求刷新计时器
│
└── 计时器超过 max_keep_alive
│
└── 上下文自动清理
使用场景 #
1. 默认配置(推荐) #
search.max_keep_alive: 24h
适用于大多数集群配置。
2. 长时间滚动 #
search.max_keep_alive: 48h
适用场景:
- 大批量数据导出
- 长时间数据处理
- 低速客户端
3. 快速清理 #
search.max_keep_alive: 1h
search.default_keep_alive: 1m
适用场景:
- 资源受限
- 快速清理过期上下文
- 防止资源泄漏
4. 数据同步任务 #
search.max_keep_alive: 72h
适用场景:
- 跨地域数据同步
- 长时间批处理
- 低带宽传输
推荐设置建议 #
| 使用场景 | max_keep_alive | default_keep_alive | 说明 |
|---|---|---|---|
| 默认 | 24h | 5m | 标准配置 |
| 大批量导出 | 48-72h | 5-10m | 允许长时间滚动 |
| 快速处理 | 1-2h | 1m | 快速清理 |
| 资源受限 | 30m-1h | 30s | 严格控制 |
| 数据同步 | 48h | 10m | 长时间任务 |
监控建议 #
# 查看当前配置
GET /_cluster/settings?filter_path=*.search.max_keep_alive
# 查看活跃滚动上下文
GET /_nodes/stats/indices/search?filter_path=**.scroll_current
# 查看滚动上下文数量
GET /_nodes/stats/indices/search?filter_path=**.scroll_total
动态配置示例 #
# 更新集群配置
PUT /_cluster/settings
{
"transient": {
"search.max_keep_alive": "48h"
}
}
注意事项 #
- 动态更新:此配置为动态配置,可在线修改
- 资源消耗:滚动上下文消耗内存和文件句柄
- 自动清理:超时后上下文自动清理
- 与并发数配合:同时受 max_open_scroll_context 限制
- 合理设置:根据数据处理时间调整





