搜索¶
查看器搜索栏支持文本搜索、字段筛选、JSON 搜索和函数查询。您也可以切换到 DQL 模式,编写完整的查询语句。
选择搜索方式¶
| 查询需求 | 使用方式 | 示例 |
|---|---|---|
| 搜索文本内容 | 文本搜索 | connection timeout |
| 搜索连续短语 | 短语搜索 | "connection timeout" |
| 按字段和值筛选 | 字段筛选 | service:api |
| 搜索 JSON 内嵌字段 | JSON 搜索 | @meta.service:api |
| 搜索 MD5 脱敏数据 | MD5 函数查询 | 见下文 |
| 搜索 IP 网段 | CIDR 函数查询 | CIDR(@client_ip, 10.0.0.0/8) |
| 执行复杂查询或计算 | DQL 查询 | L::logs:(*) {...} |
搜索与筛选
直接输入文本时,系统执行文本搜索;使用 字段名:字段值 时,系统执行字段筛选。例如,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”。
停用词
部分频繁出现且对检索意义较小的词语不会参与全文索引。若搜索结果与预期不一致,可查看全文索引停用词清单。
JSON 搜索¶
前提
- 工作空间在
2022年6月23日后创建; - 日志查看器中使用。
JSON 搜索用于查询日志 message 中的内嵌字段,message 必须是有效的 JSON 格式。查询格式为 @字段名:字段值;查询嵌套字段时,使用 . 连接各层级字段名。
例如,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 加密,可以输入:
系统会计算 red 的 MD5 值,并与 color 字段中保存的哈希值进行匹配。MD5 对大小写和空格敏感,请确保输入内容与加密前的原始值完全一致。
MD5 加密不可逆,无法通过哈希值还原原始内容。更多说明可参考敏感数据扫描。
DQL 查询¶
需要使用函数、表达式、聚合或复杂筛选条件时,可以点击搜索栏右侧的 DQL 按钮,进入 DQL 查询模式:
系统会根据当前查看器自动带入对应的数据类型和数据源。例如,以下 DQL 查询用于检索最近一小时内 message 包含 connection timeout 的日志:
L表示日志数据;"default"表示日志索引;logs表示数据源;[1h]表示查询最近一小时的数据。
进入 DQL 模式后,需要使用完整的 DQL 语句。不同查看器对应的数据类型不同,不可在当前查看器中切换到其他数据类型。
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 查看器搜索历史互通。
除上述情况外,其余查看器均独立保存各自的搜索历史。


