搜索语法
适用于Alpha
日志、问题(Issues)、会话、事件和 API 页面共用一个搜索框和同一套搜索语法。搜索是一段文本,例如 user.id:"customer-123" AND !browser:Chrome,可以直接复制、粘贴,也可以在原处改值。所有条件必须同时满足。
可以自己输入,也可以让搜索框来写。建议会跟着光标走:输入字段名时提示字段;输入冒号后提供「不是」「属于其中之一」「包含」等条件,以及该字段的常见取值。选中的内容会写进文本,条件之间自动加 AND。字段名、操作符和值用不同颜色显示。按 Enter 执行搜索(选中一个取值会立即执行;改了还没执行时,搜索框里会提示「按 Enter 搜索」);地址栏用 q 保存这段查询,复制链接就能打开同样的搜索。
| 写法 | 含义 | 适用于 |
|---|---|---|
route:/checkout |
是 | 所有字段 |
!route:/checkout |
不是 | 所有字段 |
browser:[Chrome,Safari] |
属于其中之一;!browser:[...] 表示不属于其中任何一个 |
所有字段 |
route:*checkout* |
包含 | 文本字段 |
route:/api/* |
开头是 | 文本字段 |
route:*.js |
结尾是 | 文本字段 |
has:trace_id |
有值;!has:trace_id 表示没有值,trace_id:* 与 has:trace_id 相同 |
文本字段和属性 |
status:>=500 |
用 >、>=、<、<= 比较数值 |
数值字段 |
duration:>2s |
比较时长,单位为 ms、s、m、h |
时长字段 |
timeout |
不带字段的词,搜索该页面自己的文本,见下文 | 除事件页以外的页面 |
- 含空格或特殊字符的值用双引号包裹:
user.id:"customer 123"。引号里的*就是星号本身。 *只能放在值的开头或结尾。- 一次搜索最多 12 个条件、1,024 个字符;一个列表最多 20 个值。
- 条件之间的
AND可写可不写:a:1 b:2与a:1 AND b:2相同。 - 不支持 OR 和括号。要匹配两个值中的任意一个,请用列表。输入
OR、NOT这样的单词会被拒绝,搜索框下方会说明原因。 - 属性写作
attributes.<名称>,例如attributes.plan:pro。
服务端拒绝搜索时,搜索框会保留你的输入,在出错的条件下面画线,并说明原因。
改版前的链接把每个筛选放在单独的参数里,例如 ?release=2.18.0&browser=Safari。这些链接仍然有效:这些参数会被读成条件,以文本形式显示在搜索框里。
各页面能搜索什么
Section titled “各页面能搜索什么”| 字段 | 不带字段的词 |
|---|---|
level、logger、release、route、browser、device、country、trace_id、session_id、user.id、anonymous_user_id、message,以及写作 attributes.<名称> 或其他任意名称的属性 |
在日志正文中查找,区分大小写 |
!level:[debug,trace] has:trace_id 会去掉调试输出,只保留带 Trace 的日志。参见日志。
问题(Issues)
Section titled “问题(Issues)”| 字段 | 不带字段的词 |
|---|---|
title、error.type、fingerprint、release、route、browser、device、country、user.id、anonymous_user_id、attributes.<名称> |
在问题标题中查找 |
大多数字段由问题汇总表回答。user.id、anonymous_user_id 和属性只保存在错误事件本身,所以这类搜索要读取原始事件,速度较慢,并且只能查到原始事件保留期内的数据。
问题的状态和负责人也写在搜索里,只能写成 字段:值,不能取反:
| 条件 | 含义 |
|---|---|
is:unresolved |
待处理,包含已回归的问题。问题列表默认使用这个条件,删掉后显示全部问题 |
is:regressed、is:resolved、is:ignored |
已回归、已解决、已忽略 |
is:new |
首次发生在所选时间范围内 |
is:unassigned、is:assigned |
没有负责人、已有负责人 |
assigned:me、assigned:none |
分配给自己、未分配 |
排序方式是搜索框旁边单独的选择器:最近发生、首次发生(新问题在前)、趋势(时间范围后半段比前半段增加最多)、事件数和影响用户。
关于事件的字段(例如 route)只要会话里任一事件匹配,这个会话就算匹配;!route:/checkout 保留从未访问过该页面的会话。
| 字段 | 不带字段的词 |
|---|---|
会话中的事件:route(也匹配页面 URL)、release、browser、os、device、country、user.id、anonymous_user_id、session_id、event(自定义事件名称)、error(错误消息)、attributes.<名称>会话本身: events、errors、page_views、api_failures(数值)和 duration |
在会话 ID、用户 ID、Route、URL、自定义事件名称和错误消息中查找 |
duration:>2m errors:>0 会列出时长较长且发生过错误的会话。
事件用搜索框旁边的选择器选择,拆分维度在分布卡片上选择。搜索框按 route(也匹配页面 URL)、country、device、browser、release 和属性缩小事件的范围,事件上报过的每个属性都会作为一个字段列出来。
例如要看 Pro 套餐的结账:先选中 checkout 事件,再在搜索框里选「属性 plan」和取值 pro,或直接输入 attributes.plan:pro。总数、趋势、拆分和样本都只统计这些事件。
- 单个属性、国家、设备或浏览器条件,为「是」或「属于其中之一」,并且按同一个维度拆分(例如
country:CN且按国家拆分):直接用每分钟汇总表计算,速度和不加搜索时一样。 - 其他情况(例如同时有两个条件、使用「不是」「包含」、按
route或release筛选,或按别的维度拆分):从原始事件逐条统计,成本更高。选中某个事件时,这类搜索最多覆盖一周;没有选中事件时最多覆盖一天。范围更长时页面会提示缩短。
事件目录、属性列表和测量值描述的是整个事件,不受搜索影响。
接口排行列表支持 endpoint、method、route、release,不带字段的词在 Endpoint 中查找。排序方式是搜索框旁边单独的选择器。列表来自每分钟汇总表,汇总表不保存状态码和耗时,所以 status、duration 不能作为列表条件。
取值建议和最近搜索
Section titled “取值建议和最近搜索”打开一个字段后,边输入边从服务端获取它在所选时间范围内的常见取值,并显示各自出现的次数。建议最多只看时间范围的最近 7 天,用于辅助输入,不是精确计数。
搜索框会记住每个页面最近执行的 10 次搜索,只保存在当前浏览器中,搜索框为空时会再次列出。
不支持的功能
Section titled “不支持的功能”- 不支持 OR、括号和正则表达式。
- 不支持 SQL。要提供运行 SQL 的查询编辑器,先要有只读数据库账号、按项目隔离的行级权限和严格的资源上限;本版本还没有这些。
Release Alpha · commit local