--- title: "搜索上下文最大保活时间配置" date: 2026-02-17 lastmod: 2026-02-17 description: "控制搜索上下文最大保活时间的配置项说明" tags: ["搜索配置", "滚动查询", "资源管理"] summary: "配置项作用 # 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 最大并发滚动上下文数 工作原理 # 滚动上下文生命周期:" --- ## 配置项作用 `search.max_keep_alive` 配置项控制滚动搜索上下文(Scroll Context)的最大保活时间。滚动搜索允许客户端分批获取大量结果集,此配置限制一个滚动上下文可以保持活跃的最大时间。 ## 配置项类型 该配置项为**动态配置**,可以在运行时通过集群设置 API 进行修改。 ## 默认值 ``` 24h ``` ## 是否必需 **可选配置项**(有默认值) ## 取值范围 ``` 0 ~ 正无穷 ``` ## 配置格式 ```yaml # 默认配置 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. 默认配置(推荐) ```yaml search.max_keep_alive: 24h ``` 适用于大多数集群配置。 ### 2. 长时间滚动 ```yaml search.max_keep_alive: 48h ``` **适用场景:** - 大批量数据导出 - 长时间数据处理 - 低速客户端 ### 3. 快速清理 ```yaml search.max_keep_alive: 1h search.default_keep_alive: 1m ``` **适用场景:** - 资源受限 - 快速清理过期上下文 - 防止资源泄漏 ### 4. 数据同步任务 ```yaml 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 | 长时间任务 | ## 监控建议 ```bash # 查看当前配置 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 ``` ## 动态配置示例 ```bash # 更新集群配置 PUT /_cluster/settings { "transient": { "search.max_keep_alive": "48h" } } ``` ## 注意事项 1. **动态更新**:此配置为动态配置,可在线修改 2. **资源消耗**:滚动上下文消耗内存和文件句柄 3. **自动清理**:超时后上下文自动清理 4. **与并发数配合**:同时受 max_open_scroll_context 限制 5. **合理设置**:根据数据处理时间调整