智能查询
用自然语言查询 Elasticsearch 中的日志与告警。网关把问题翻译为只读 DSL,试跑通过后执行。
智能查询把一句自然语言问题翻译为 Elasticsearch DSL 并执行,返回明细表或聚合表。它是登录后的首页,所有版本都可以使用。
查询的处理过程
网关先判断问题涉及的索引、时间范围和统计维度,再让模型生成 DSL。生成的 DSL 经过只读校验,含写操作或脚本的查询直接拒绝。校验通过后,网关在目标索引上以 size=0 试跑一次。试跑报错时,错误信息返回给模型修正一轮,修正后仍然失败则提示换一种问法。
发送给模型的数据先按 系统设置 中的脱敏档位处理。云端模式下,结果中的 IP、账号等值显示为占位符,例如 10.30.x.x。
运行查询
步骤
- 在输入框中输入问题,例如「最近 24 小时登录失败最多的 10 个源 IP」。
- (可选)在输入框左侧选择 索引:自动,从白名单中指定一个索引。
- (可选)选择时间范围。默认为 全部时间。
- 发送问题。多行问题用
Shift+Enter换行。
生成过程中,卡片依次显示理解问题、生成查询、执行三个阶段。使用思考模型时,推理内容折叠在 AI 在想 中。

结果卡头部显示所用索引、命中数、耗时、token 用量和 可信度。可信度是模型对这条查询是否理解正确的自评。为 高 时,结果可以直接使用。为 中 时,展开生成的查询核对 DSL。为 低 时,通常需要换一种问法。
问题中写了时间(如「最近 1 小时」),同时又选择了时间范围时,查询取两者的交集。卡片上注明时间范围已同步、已覆盖问题中的时间条件,或在问题的时间条件之内。
没有想好问什么时,首页的起始问题分六类,每类四个问法,选择即发送。

核对和修改生成的查询
步骤
- 在结果卡片下方,选择 查看生成的查询。
- 选择 编辑,修改 DSL。
- 选择 保存。网关用修改后的 DSL 替换原查询并执行。
修改过的查询在卡片上标记为 已手改。同一位置还可以 复制 DSL,或选择 在 Kibana 中打开(需要先在系统设置中配置 Kibana 地址)。

下钻聚合结果
聚合表中的每一行是一个分组。选择任意一行,网关按该分组的值拉取原始文档,显示为明细表。选择 返回统计 回到聚合表。
明细表的列集按索引记忆,下次查询同一索引时沿用。
保存常用查询
在生成的查询中选择 存为快捷查询 并命名。保存后的查询出现在新会话首页的 我的常用 中,选择后直接复用已保存的 DSL,不再调用模型。
处理结果
| 操作 | 说明 |
|---|---|
| 解读这批结果 | 模型总结当前结果,结果保存在 分析记录 中 |
| 送去分诊 | 把命中的告警交给 批量分诊 |
| 导出 CSV | 把当前表格导出为 CSV。聚合表导出全部分组 |
| 反馈 | 查询是对的 与 查询有问题 进入学习库。报告问题时可以粘贴正确的查询,同类问题下次按它生成 |
结果为空时
结果为空时,网关先判断是数据确实不存在,还是时间窗、条件或索引不匹配,并在卡片上给出下一步操作。
| 情况 | 卡片上的处理 |
|---|---|
| 时间窗不匹配,例如问最近 1 小时,而索引最新的数据在十天前 | 显示索引的数据时间范围,提供改查该范围的按钮。索引中有未来时间的日志(采集端把本地时间当作 UTC 写入)时一并指出 |
| 多个条件组合后为空 | 逐个放宽条件试跑,列出去掉每个条件后的命中数。选择一条,按放宽后的条件重跑 |
| 当前索引中没有匹配 | 在其他索引中试跑相同条件,列出有命中的索引和条数。选择索引名只查该索引;全部没有命中时,可选择 在全部日志里重新生成 |
| 问题涉及多个数据源,部分没有命中 | 指出没有命中的数据源,提示字段值的写法可能不同 |
条件放宽后才有结果,常见原因是日志原文与问题用词不同,例如日志中写的是 Out of memory,问题中写的是 OOM。

继续追问
在同一会话中继续提问时,模型带上前一轮的上下文。它沿用上一轮的索引(卡片上会标注),也能理解「第一名」「那个 IP」这类指代。换话题时,选择右上角的 新会话。
会话保存在网关侧的 .rst_copilot_conversations 索引中,7 天没有活动后过期,在其他浏览器登录后可以继续。选择左上角的会话名,打开 最近的会话 列表。失败、已中断和生成中的会话带有标记。

首字超时
模型 45 秒内没有返回第一个字时,网关中止请求并提示重试。超时时长由 RST_LLM_FIRST_TOKEN_TIMEOUT_S 设置,0 表示不限。
这种情况多数由模型端拥塞引起。连续出现时,在 AI 配置 中降低该 provider 的推理强度,或添加另一个 provider。