搜索¶
查看器搜索栏支持分词搜索、短语搜索、字段筛选、JSON 搜索和函数查询。您也可以切换到 DQL 模式,编写完整的查询语句。
选择搜索方式¶
| 查询需求 | 使用方式 | 示例 |
|---|---|---|
| 搜索文本内容 | 文本搜索 | connection timeout |
| 搜索连续短语 | 短语搜索 | #"connection timeout" |
| 按字段和值筛选 | 字段筛选 | service:api |
| 搜索 JSON 内嵌字段 | JSON 搜索 | @meta.service:api |
| 搜索 MD5 脱敏数据 | MD5 函数查询 | color:md5(red) |
| 搜索 IP 网段 | CIDR 函数查询 | CIDR(@client_ip, 10.0.0.0/8) |
| 执行复杂查询或计算 | DQL 查询 | L::logs:(*) {...} |
搜索与筛选
直接输入文本时,系统执行分词搜索;在引号前添加 # 时,系统执行短语搜索;使用 字段名:字段值 时,系统执行字段筛选。例如,error timeout 用于分词搜索,#"error timeout" 用于连续短语搜索,service:api 用于筛选 service 字段。
组合搜索¶
日志查看器会在搜索栏下拉列表中提示 AND、OR 等常用组合操作符。
AND:同时满足前后两个条件;OR:满足前后任意一个条件;- 组合操作符必须使用大写;
- 小写
and、or会被当作普通文本参与搜索。
例如:
service:api AND status:error
source:nginx OR source:apache
(service:api OR service:web) AND status:error
文本搜索¶
查看器文本搜索采用 search() 查询语法。系统会对输入内容进行分词,并检索同时包含所有分词的数据。
- 中文按字符进行分词;
- 英文按空格、标点等词边界进行分词;
- 英文搜索不区分大小写;
- 各分词不要求连续出现。
分词搜索¶
输入文本后,系统会自动进行分词。只要数据中同时包含全部分词,即使分词之间存在其他内容,也可以被检索到。
中文示例:
以上结果均包含搜索内容的全部有效分词,这些分词不要求连续出现。
英文示例:
输入:connection timeout
可能匹配:
- connection timeout
- Connection retry timeout
- connection request failed due to timeout
以上结果均同时包含“connection”和“timeout”,分词不要求连续出现,且不区分大小写。
短语搜索¶
如果需要按照完整、连续的短语进行检索,请在引号前添加 #。推荐使用英文半角双引号:
#"我喜欢苹果":可以匹配“我喜欢苹果,也喜欢香蕉”,不会匹配“我很喜欢吃苹果”;#"connection timeout":可以匹配“connection timeout occurred”,不会匹配“connection retry timeout”。
查看器支持以下短语写法:
| 写法 | 说明 | 转换后的 DQL 条件 |
|---|---|---|
#"connection timeout" |
推荐写法 | search('#"connection timeout"') |
#'connection timeout' |
单引号兼容写法 | search('#"connection timeout"') |
#“connection timeout” |
中文引号兼容写法 | search('#"connection timeout"') |
# 是短语搜索操作符,不属于搜索内容。仅使用引号而不添加 # 不会启用短语搜索。引号必须成对出现,且短语不能为空;未闭合的 #"connection timeout、#'connection timeout 以及空短语 #""、#'' 不会作为有效查询执行。
短语搜索可以与字段筛选和组合操作符一起使用:
其中,-#"health check" 表示排除包含该连续短语的数据,对应 DQL 条件 not search('#"health check"')。从标准模式切换到 DQL 模式时,兼容写法会统一转换为 #"..." 的 DQL 短语形式;切回标准模式时不会累积反斜杠转义字符。
停用词
部分频繁出现且对检索意义较小的词语不会参与全文索引。若搜索结果与预期不一致,可查看全文索引停用词清单。
JSON 搜索¶
前提
- 工作空间在
2022年6月23日后创建; - 日志查看器中使用。
JSON 搜索用于查询日志 message 中的内嵌字段,message 必须是有效的 JSON 格式。查询格式为 @字段名:字段值;查询嵌套字段时,使用 . 连接各层级字段名。
以 @meta.service:api 为例:
| 组成部分 | 含义 |
|---|---|
@ |
JSON 字段前缀,查看器会将其识别为操作符 |
meta.service |
message 中的嵌套字段路径 |
: |
字段和值的分隔符 |
api |
需要匹配的字段值 |
例如,message 内容如下:
{
"__namespace": "tracing",
"cluster_name_k8s": "k8s-demo",
"meta": {
"service": "ruoyi-mysql-k8s",
"name": "mysql.query"
}
}
可使用以下条件查询:
@cluster_name_k8s:k8s-demo # 精确匹配
@cluster_name_k8s:k?s* # 通配符匹配
@meta.service:ruoyi-mysql-k8s # 查询嵌套字段
@meta.service:ruoyi?mysql* # 嵌套字段通配符匹配
其中,* 匹配零个或多个字符,? 匹配一个字符。此处的通配符仅用于字段筛选,不适用于普通文本搜索。
字段名包含 .¶
在 JSON 搜索中,. 默认表示嵌套字段层级。如果字段名本身包含 .,需要使用反斜杠 \ 转义。
| 场景 | 正确写法 | 说明 |
|---|---|---|
查询嵌套字段 log.tag |
@log.tag:error |
. 表示字段层级 |
查询字段名 user.id |
@user\.id:1001 |
\ 将 . 转义为字段名的一部分 |
不支持使用双引号包裹字段名,例如 @"user.id":1001。
MD5 函数查询¶
如果敏感数据扫描规则对敏感内容进行 MD5 处理,原始值会被替换为不可逆的 32 位十六进制哈希值。需要使用原始值定位脱敏后的数据时,可以在查看器中使用 MD5 函数查询。
推荐使用函数形式:
例如,color 字段中的原始值 red 已转换为 MD5 哈希,可以输入:
系统会将其转换为以下 DQL 条件:
查看器会将 md5 和括号识别为函数语法。为兼容已有查询,旧写法 color:md5|red 仍然可用,并生成相同的 DQL 条件。函数参数不能为空;MD5 对大小写和空格敏感,请确保输入内容与加密前的原始值完全一致。
MD5 是单向散列算法,无法通过哈希值还原原始内容。更多说明可参考敏感数据扫描。
DQL 查询¶
需要使用函数、表达式、聚合或复杂筛选条件时,可以点击搜索栏右侧的 DQL 按钮,进入 DQL 查询模式:
标准模式中的搜索条件会在切换模式时转换为 DQL。例如:
| 标准模式 | DQL 条件 |
|---|---|
#"connection timeout" |
search('#"connection timeout"') |
-#"health check" |
not search('#"health check"') |
color:md5(red) |
`color` = md5("red") |
系统会根据当前查看器自动带入对应的数据类型和数据源。例如,以下 DQL 查询用于检索最近一小时内 message 包含 connection timeout 的日志:
L表示日志数据;"default"表示日志索引;logs表示数据源;[1h]表示查询最近一小时的数据。
进入 DQL 模式后,需要使用完整的 DQL 语句。不同查看器对应的数据类型不同,不可在当前查看器中切换到其他数据类型。
日志查看器分析模式
在日志查看器中将高级查询与页面分析配置组合使用时,如果查询语句包含 BY 分组条件,页面会忽略语句中的 BY,以页面配置的分析维度为准,避免产生重复或冲突的分组条件。
CIDR 函数查询¶
CIDR 函数用于查询指定 IP 字段中属于某个网段的数据,执行的是网段范围匹配,而不是字符串匹配。
CIDR 由网络地址和前缀长度组成,例如 13.0.0.0/8。前缀长度越大,匹配的地址范围越小;IPv4 中 /32 仅匹配一个 IP 地址。
查询格式:
例如,查询 network.client.ip 字段中属于 13.0.0.0/8 网段的数据:
如果需要精确匹配单个 IPv4 地址,可以使用 /32:
字段值为空、格式错误或不是有效的 IP 地址时,不会被匹配。
在 DQL 模式下,可以使用小写的 cidr() 函数,并用双引号包裹网段:
搜索历史¶
日志查看器的索引选择历史独立于搜索和筛选条件历史,并通过日志索引搜索框右侧的历史图标打开。
当前用户可在本地浏览器中查看最近使用的搜索和筛选条件,最多保留 100 条。点击历史条件即可在当前查看器中复用。
搜索历史合并记录
查看器作为平台内的通用工具,适用于多个功能,不同功能之间的搜索历史互通性存在一些差异:
- RUM > Session/View/Resource/Action/Long Task/Error 六种查看器搜索历史互通;
- 容器查看器与 Kubernetes 查看器搜索历史互通;
- 资源目录查看器搜索历史互通;
- 日志查看器与日志错误追踪查看器搜索历史互通;
- 链路查看器、APM 错误追踪、Profiling 查看器搜索历史互通。
除上述情况外,其余查看器均独立保存各自的搜索历史。


