配置项作用 #
rollup.search.search_all_jobs 配置项用于控制搜索时是否包含所有的 Rollup 任务。
当设置为 true 时,搜索会包含所有 Rollup 任务;当设置为 false 时,搜索只会根据字段映射匹配相关的 Rollup 任务。
配置项属性 #
- 配置路径:
rollup.search.search_all_jobs - 数据类型:
Boolean(布尔值) - 默认值:
false - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(可以动态更新,无需重启)
配置项详解 #
工作机制 #
搜索模式对比
search_all_jobs: false (默认,智能匹配):
搜索请求:
POST /metrics-*/_search
{
"aggs": {
"avg_cpu": { "avg": { "field": "cpu" } }
}
}
│
├── 分析查询需求
│ ├── 查询字段: cpu
│ ├── 聚合类型: avg
│ └── 时间范围: 自动识别
│
├── 匹配 Rollup 任务
│ ├── job1: metrics-hourly (包含 cpu + avg) ✅
│ ├── job2: metrics-daily (包含 cpu + avg) ✅
│ └── job3: metrics-weekly (只有 count) ❌
│
└── 只搜索匹配的任务:
├── job1 (metrics-hourly)
└── job2 (metrics-daily)
search_all_jobs: true (搜索所有任务):
同样的搜索请求:
│
├── 不分析查询需求
├── 获取所有 Rollup 任务
│ ├── job1: metrics-hourly ✅
│ ├── job2: metrics-daily ✅
│ └── job3: metrics-weekly ✅
│
└── 搜索所有任务:
├── job1 (metrics-hourly)
├── job2 (metrics-daily)
└── job3 (metrics-weekly) - 可能返回空结果
任务匹配规则 #
字段映射匹配逻辑
false 模式 (智能匹配):
匹配条件:
├── 1. 任务索引模式匹配查询索引
├── 2. 任务包含查询所需字段
└── 3. 任务支持查询使用的聚合类型
示例查询:
{
"aggs": {
"by_host": {
"terms": { "field": "host" },
"aggs": {
"avg_cpu": { "avg": { "field": "cpu" } }
}
}
}
}
匹配判断:
├── job_hourly:
│ ├── 字段: host (terms), cpu (avg) ✅
│ ├── 聚合: terms, avg ✅
│ └── 匹配 ✅
│
├── job_daily:
│ ├── 字段: host, cpu ✅
│ ├── 聚合: terms, avg ✅
│ └── 匹配 ✅
│
└── job_weekly:
├── 字段: host (terms), cpu (sum) ❌
├── 没有 avg 聚合
└── 不匹配 ❌
性能影响对比 #
性能影响分析
search_all_jobs: false
├── 优点:
│ ├── 只搜索相关任务
│ ├── 减少无效查询
│ ├── 提高查询性能
│ └── 减少网络开销
│
└── 推荐 ✅
search_all_jobs: true
├── 缺点:
│ ├── 搜索所有任务
│ ├── 包括不相关任务
│ ├── 增加查询开销
│ └── 可能返回部分空结果
│
└── 谨慎使用 ⚠️
与 max_count 配合 #
配合 max_count 使用
场景 1: search_all_jobs: false, max_count: 5
├── 匹配的任务数: 3
├── max_count: 5
└── 搜索全部 3 个匹配任务 ✅
场景 2: search_all_jobs: false, max_count: 2
├── 匹配的任务数: 5
├── max_count: 2
└── 只搜索前 2 个 ⚠️
场景 3: search_all_jobs: true, max_count: 2
├── 总任务数: 10
├── max_count: 2
└── 只搜索前 2 个任务 ⚠️
配置建议 #
生产环境(默认推荐) #
rollup:
search:
search_all_jobs: false # 智能匹配
建议: 大多数场景使用默认值,提高查询效率。
兼容性场景 #
rollup:
search:
search_all_jobs: true # 搜索所有
建议: 需要确保所有 Rollup 数据都被查询时使用。
高性能场景 #
rollup:
search:
search_all_jobs: false
max_count: 3
建议: 性能敏感场景,限制搜索范围。
动态更新 #
PUT /_cluster/settings
{
"transient": {
"rollup.search.search_all_jobs": false
}
}
代码示例 #
基础配置 #
rollup:
search:
search_all_jobs: false
完整 Rollup 搜索配置 #
rollup:
search:
enabled: true
max_count: 5
search_all_jobs: false
智能匹配模式 #
rollup:
search:
enabled: true
search_all_jobs: false # 只搜索匹配的任务
全量搜索模式 #
rollup:
search:
enabled: true
search_all_jobs: true # 搜索所有任务
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
search.search_all_jobs | 搜索所有任务 | false |
search.enabled | 搜索功能开关 | false |
search.max_count | 最大搜索数量 | 2 |
注意事项 #
默认值: 默认值为
false,推荐使用。动态更新: 支持动态更新。
性能影响:
true会增加查询开销。数据完整性:
false模式下,不匹配的任务不会返回数据。字段匹配:
false模式依赖正确的字段映射。聚合支持: 确保任务支持查询使用的聚合类型。
合理选择: 根据查询需求选择合适的模式。
测试验证: 更改配置后验证查询结果。
监控建议: 监控查询性能和结果完整性。
最佳实践: 生产环境推荐使用
false。
使用场景 #
适合使用 false 的场景 #
推荐场景:
1. 明确的查询需求
├── 知道需要哪些字段
├── 知道使用什么聚合
└── Rollup 任务设计良好
2. 性能敏感场景
├── 大量并发查询
├── 响应时间要求高
└── 资源有限
3. 标准化的 Rollup 任务
├── 任务设计规范
├── 字段映射清晰
└── 聚合类型明确
适合使用 true 的场景 #
特殊场景:
1. 兼容性需求
├── 不确定查询需求
├── 需要确保覆盖所有数据
└── 任务结构复杂
2. 开发测试环境
├── 验证功能
├── 调试问题
└── 测试不同任务
3. 临时的查询需求
├── 临时分析
├── 数据探索
└── 一次性查询





