--- title: "Rollup 搜索所有任务配置" date: 2026-03-05 lastmod: 2026-03-05 description: "rollup.search.search_all_jobs 配置项用于控制是否搜索所有 Rollup 任务。" tags: ["Rollup", "搜索", "任务匹配"] summary: "配置项作用 # 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." --- ## 配置项作用 `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 个任务 ⚠️ ``` ## 配置建议 ## 生产环境(默认推荐) ```yaml rollup: search: search_all_jobs: false # 智能匹配 ``` **建议**: 大多数场景使用默认值,提高查询效率。 ## 兼容性场景 ```yaml rollup: search: search_all_jobs: true # 搜索所有 ``` **建议**: 需要确保所有 Rollup 数据都被查询时使用。 ## 高性能场景 ```yaml rollup: search: search_all_jobs: false max_count: 3 ``` **建议**: 性能敏感场景,限制搜索范围。 ## 动态更新 ```json PUT /_cluster/settings { "transient": { "rollup.search.search_all_jobs": false } } ``` ## 代码示例 ## 基础配置 ```yaml rollup: search: search_all_jobs: false ``` ## 完整 Rollup 搜索配置 ```yaml rollup: search: enabled: true max_count: 5 search_all_jobs: false ``` ## 智能匹配模式 ```yaml rollup: search: enabled: true search_all_jobs: false # 只搜索匹配的任务 ``` ## 全量搜索模式 ```yaml rollup: search: enabled: true search_all_jobs: true # 搜索所有任务 ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `search.search_all_jobs` | 搜索所有任务 | false | | `search.enabled` | 搜索功能开关 | false | | `search.max_count` | 最大搜索数量 | 2 | ## 注意事项 1. **默认值**: 默认值为 `false`,推荐使用。 2. **动态更新**: 支持动态更新。 3. **性能影响**: `true` 会增加查询开销。 4. **数据完整性**: `false` 模式下,不匹配的任务不会返回数据。 5. **字段匹配**: `false` 模式依赖正确的字段映射。 6. **聚合支持**: 确保任务支持查询使用的聚合类型。 7. **合理选择**: 根据查询需求选择合适的模式。 8. **测试验证**: 更改配置后验证查询结果。 9. **监控建议**: 监控查询性能和结果完整性。 10. **最佳实践**: 生产环境推荐使用 `false`。 ## 使用场景 ## 适合使用 false 的场景 ``` 推荐场景: 1. 明确的查询需求 ├── 知道需要哪些字段 ├── 知道使用什么聚合 └── Rollup 任务设计良好 2. 性能敏感场景 ├── 大量并发查询 ├── 响应时间要求高 └── 资源有限 3. 标准化的 Rollup 任务 ├── 任务设计规范 ├── 字段映射清晰 └── 聚合类型明确 ``` ## 适合使用 true 的场景 ``` 特殊场景: 1. 兼容性需求 ├── 不确定查询需求 ├── 需要确保覆盖所有数据 └── 任务结构复杂 2. 开发测试环境 ├── 验证功能 ├── 调试问题 └── 测试不同任务 3. 临时的查询需求 ├── 临时分析 ├── 数据探索 └── 一次性查询 ```