用途:在 Elastic Observability 中检索与过滤日志,支持事故调查,流程类似 Kibana Discover:先限定时间范围与范围过滤,再迭代添加 NOT 排除过滤,直到剩下少量有价值的日志。仅使用 ES|QL(POST /_query),不使用 Query DSL。不适用于指标或追踪,应使用对应的专用工具。
主要能力:单次请求同时返回时间序列直方图、总数、少量日志样本与消息分类(常见与罕见模式)。使用 FORK 五路输出:fork1 趋势、fork2 总数、fork3 样本、fork4 常见模式(按计数前 20)、fork5 罕见模式(后 20)。参数约定:start、end(Elasticsearch 日期数学,如 now-1h)、kqlFilter、limit、groupBy。实体过滤使用 ECS 字段名,如 service.name、host.name、kubernetes.pod.name。
使用方式:漏斗式迭代,不要一次查询就下结论。每轮为当前主要噪声添加 NOT 子句,并保留此前全部过滤,重复运行,直到剩余日志模式少于 20 个。直方图优先,用于判断尖峰或下降的时间点并收窄时间范围。样本分支用 KEEP 只返回摘要字段,默认 LIMIT 10–20,上限 500。消息回退顺序:body.text、message、error.message、event.original、exception.message 等。KQL 中短语查询用引号,无法按单术语分词时用通配符,但通配符不要放在引号短语内。请求体为 JSON,需正确转义引号。
限制:log.level 常缺失或错误,仅作提示;不要只搜 error 等关键词,容易匹配无害提及。若未达到少于 20 个模式就停止,会报告噪声而非真实故障。索引模式、时间范围与桶大小需按实际情况调整,桶数量建议约 20–50 个。字段映射与索引模式参考 references/log-search-reference.md。