配置项作用 #
async_search.max_keep_alive 配置项限制异步搜索结果在集群中存储的最长时间。该配置项是 keep_alive 参数的上限,用于防止异步搜索结果占用过多存储空间。
配置项类型 #
该配置项为动态配置,可以在运行时通过集群更新 API 进行修改,无需重启节点。
默认值 #
5d(5天)
是否必需 #
可选配置项
取值范围 #
正数时间值(如 1h、2d、7d 等)
工作原理 #
当用户提交异步搜索请求时,可以指定 keep_alive 参数来控制结果的保留时间:
POST /my-index/_async_search?keep_alive=1h
{
"query": { "match_all": {} }
}
系统会使用以下两者中的较小值作为实际保留时间:
- 用户请求中的
keep_alive参数值 - 集群配置的
async_search.max_keep_alive值
如果用户指定的 keep_alive 超过此限制,系统将自动将其截断为配置的最大值。
使用示例 #
# 默认配置(5天)
async_search.max_keep_alive: 5d
# 缩短保留时间(1天)
async_search.max_keep_alive: 1d
# 延长保留时间(30天)
async_search.max_keep_alive: 30d
# 设置为12小时
async_search.max_keep_alive: 12h
推荐设置建议 #
生产环境建议:根据实际业务需求和存储容量设置
推荐配置:
# 通用场景:1-3天
async_search.max_keep_alive: 2d
# 大数据量场景:1天以内
async_search.max_keep_alive: 1d
# 长期分析场景:7天以内
async_search.max_keep_alive: 7d
设置考虑因素:
- 存储容量:异步搜索结果存储在
.async-search系统索引中,会占用磁盘空间 - 业务需求:用户需要多长时间后获取异步搜索结果
- 清理策略:与
async_search.expired.persisted_response.cleanup_interval配合使用
行为示例 #
# 场景:async_search.max_keep_alive = 1d
# 请求1:keep_alive=30m → 实际保留30分钟
POST /index/_async_search?keep_alive=30m
# 请求2:keep_alive=1d → 实际保留1天
POST /index/_async_search?keep_alive=1d
# 请求3:keep_alive=7d → 实际保留1天(被限制)
POST /index/_async_search?keep_alive=7d
相关配置项 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
async_search.expired.persisted_response.cleanup_interval | 过期结果清理间隔 | 30分钟 |
async_search.max_search_running_time | 搜索最大运行时间 | 12小时 |
async_search.max_wait_for_completion_timeout | 等待完成超时上限 | 1分钟 |
async_search.persist_search_failures | 是否持久化失败结果 | false |
注意事项 #
- 动态更新:修改此配置后立即生效,仅影响新提交的异步搜索请求
- 存储影响:较大的保留时间会增加
.async-search系统索引的存储需求 - 与过期清理的关系:清理任务会删除所有超过 keep_alive 时间的异步搜索结果
- 系统索引:异步搜索结果存储在
.async-search系统索引中,需确保有足够的磁盘空间 - 查询已过期结果:访问已过期的异步搜索结果会返回
resource_not_found_exception错误





