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

配置项作用 #

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_alive24h最大保活时间
search.default_keep_alive5m默认保活时间
search.max_open_scroll_context500最大并发滚动上下文数

工作原理 #

滚动上下文生命周期:

┌─────────────────────────────────────────────────────────────────┐
│                    滚动上下文生命周期                              │
└─────────────────────────────────────────────────────────────────┘

创建滚动搜索
    │
    ├── 设置 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_alivedefault_keep_alive说明
默认24h5m标准配置
大批量导出48-72h5-10m允许长时间滚动
快速处理1-2h1m快速清理
资源受限30m-1h30s严格控制
数据同步48h10m长时间任务

监控建议 #

# 查看当前配置
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"
  }
}

注意事项 #

  1. 动态更新:此配置为动态配置,可在线修改
  2. 资源消耗:滚动上下文消耗内存和文件句柄
  3. 自动清理:超时后上下文自动清理
  4. 与并发数配合:同时受 max_open_scroll_context 限制
  5. 合理设置:根据数据处理时间调整