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

配置项作用 #

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

注意事项 #

  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. 临时的查询需求
   ├── 临时分析
   ├── 数据探索
   └── 一次性查询