Kibana 正则查询语法示例大全
Kibana 的正则查询:KQL 中用 字段 : /正则/ 语法(如 status: /4../),Lucene 模式用斜杠包裹。本文给出 IP 段匹配、状态码段、路径前缀等常用正则示例与性能注意事项。
KQL 中正则用斜杠包裹:status : /5../ 匹配所有 5xx 状态码;client_ip : /10\\.0\\..*/ 匹配内网 IP 段——正则查询直观但性能较差,生产慎用在大数据量上。
常用示例
# 状态码段:所有 4xx
status : /4../
# 内网 IP 段
client_ip : /10\\.0\\.[0-9]+\\.[0-9]+/
# 路径前缀:/api/v2 开头的所有接口
url : /\\/api\\/v2\\/.*/
# 域名后缀
host : /.*\\.example\\.com/
# 多种错误之一
level : /(ERROR|FATAL)/
操作入口
- KQL 搜索栏直接写上述语法;
- 或 Add filter → Edit as Query DSL 写
regexp查询:
{ "regexp": { "status": "5.." } }
性能注意
- 正则查询无法走索引前缀优化,前置通配(
/.*error/)最慢,尽量让正则以固定字符开头; - keyword 字段上做正则;text 字段上正则匹配的是分词后的 term,语义容易出乎意料;
- 高频使用的过滤条件,不如在采集侧把维度解析成独立字段再精确匹配。
观测云对照
观测云 DQL 支持正则匹配函数与通配符筛选,日志查看器的筛选面板对常用模式(IP 段、状态码)提供点选式操作。
常见问题(FAQ)
Q:KQL 里正则特殊字符要转义吗? 斜杠内的 . * 是正则语义;匹配字面点号写 \\.。
Q:正则查不到数据? 先确认字段类型——text 字段的 term 是分词结果,整串正则匹配不到。