日志服务数据加工: 查询字符串语法

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,标准 - 同城冗余存储 20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 本文介绍日志服务数据家中中的查询字符串语法, 其类似日志服务查询以及lucene语法, 极大简化条件判断的逻辑编写.

概述

搜索字符串是ETL语言中用于快速过滤的语法, 语法基本上与日志服务的查询语法, 以及lucene 语法相同. 可以极大简化数据加工的条件判断的逻辑.

相关函数

如下函数会使用到查询字符串语法.

类型 函数 使用场景
表达式函数-事件判断函数 e_search 使用查询字符串判断事件的字段值是否满足特定条件, 返回True或False
表达式函数-资源函数 res_log_logstore_pull 拉取Logstore资源返回表格, 构建表格中, 使用查询字符串配置黑白名单, 来判断每行是保留还是丢弃.
全局事件函数-搜索表格映射 e_search_table_map 关键字是查询字符串, 值是匹配的值的字典进行映射

功能概览

功能 字段 全文
子串搜索 支持 支持
通配符*?搜索 支持 支持
完全匹配搜索 支持 -
正则表达式搜索 支持 -
数值范围搜索 支持 -
数值比较 支持 -
关系and, or, not以及自由组合 支持 支持

搜索值转义

  1. 包含", \时需要用\转义.
    例如:

content: "abc\"xy\\z" 合法

  1. 希望搜索*, ?时, 也需要用\转义, 否则会被视为通配符匹配
  2. 包含中文, 字母, 数字, 下划线, 小横线, *, ?等情况不需要用双引号, 其他情况需要用双引号括起来.
    例如:

status: "\*\?()[]:=" 值含特殊字符的值, 推荐放在"中, 除了*?和需要转义外, 其他不用转义
status: active\*test 值只包含*或?, 可以不用双引号
status: active\?test 值只包含*或?, 可以不用双引号
content: ()[]:= 非法

字段名转义

  • 字段名不能使用双引号, 包含特殊字符时直接使用\转义,
  • 包含中文, 字母, 数字, 下划线, 小横线等情况不需要用双引号, 其他情况需要.
  • 例如:
    "\*\(\1+1\)\?: abc") 字段不可以用双引号, 特殊字符用转义

__tag__\:__container_name__: abc 用转义
中文字段: abc" 中文不需要转义
"content": abc 非法, 字段名不能用双引号括起来

注意: 值用字符串用双引号括起来, 不支持单引号
e_search("domain: '/url/test.jsp'")是错误的, 只能e_search('domain: "/url/test.jsp"')

子串搜索

语法

e_search("子串")
e_search("字段名: 子串")

全文搜索

对所有字段进行搜索子串

样例 场景
e_search("active error") 多个子串搜索, 默认关系是OR
e_search('"active error"') 搜索完整带空格的子串
e_search('"错误"') 中文子串

字段搜索

对特定字段进行搜索

样例 场景
e_search("status: active") 子串搜索
e_search('author: "john smith"') 带空格子串搜索
e_search('fileld: active error') 相当于 field:active OR "error"

通配符搜索

* ? 匹配: *表示 0个或多个字符串, ? 表示一个字符, 也可以表示一个宽字符如中文.

全文搜索

对所有字段进行搜索子串

样例 场景
e_search("active*test") 匹配0到多个, 不需要用双引号括起来
e_search("发生*错误") 中文匹配, 可以匹配发生错误, 发生严重错误
e_search("active?good") ? 可以不用双引号
e_search("ac*tive?good") 也可以应用于完全匹配
e_search("ac*tive??go*od") 支持多个混合使用

字段搜索

对特定字段进行搜索子串

样例 场景
e_search("status: active*test") 匹配0到多个
e_search("status: active?good") 匹配一个

完全匹配

不同于子串搜索, 只需要局部匹配即可, 完全匹配要求对字段值从开头到结尾的值完全匹配.

语法

e_search("字段名==子串")

样例

样例 场景
e_search('author== "john smith"') 字段author必须完全等于john smith
e_search("status== ac*tive?good") 可以与通配符结合使用

正则表达式匹配

语法

使用正则表达式匹配, 比通配符更强大的匹配方式.

e_search("字段名~=正则表达式字符串")

因为正则表达式大量使用\, 推使用r修饰搜索字符串.
注意: 默认使用的是局部匹配, 而不是完全匹配, 如果需要完全匹配只需要在开头和结尾加上^$即可

样例

样例 场景
e_search(r'status~= "\d+"') status字段包含数字
e_search(r'status~= "^\d+$"') status字段等于数字

数值比较

范围类比较

语法

这里是左右闭区间, 支持*表示无边界.

e_search("字段: [左值, 右值]"   # >= 左值, <= 右值
e_search("字段: [*, 右值]")        # <= 右值
e_search("字段: [左值, *]")        #  >= 左值

样例

e_search('count: [100, 200]')   # >=100 and  <=200
e_search('count: [*, 200]')   # <=200
e_search('count: [200, *]')   # >=200

数值直接比较

语法样例

直接使用>, >=, =, <, <=比较:

e_search('age >= 18')   # >= 18
e_search('age > 18')   #  > 18
e_search('age = 18')   #  = 18
e_search('age <= 18')   #  <=18
e_search('age < 18')   #  <18

逻辑关系

全局逻辑关系

支持任意搜索之间的逻辑关系, 也支持用 ( ) 进行嵌套.

逻辑 关键字
and AND && 大小写不敏感
or OR 双竖线 大写小不敏感
not ! 大小写不敏感

样例

e_search("abc OR xyz")  # 大小写不敏感
e_search("abc and (xyz or zzz)")
e_search("abc and not (xyz and not zzz)")
e_search("abc && xyz")        # and
e_search("abc || xyz")        # or
e_search("abc || !xyz")        # or not

子串匹配逻辑关系

在子串匹配是也支持逻辑关系:

样例

e_search("field: (abc OR xyz)")  # 字段field包含 abc 或 xyz
e_search("field: (abc OR not xyz)")  # 字段field包含 abc 或 不包含xyz
e_search("field: (abc && !xyz)")  # 字段field包含 abc 且 不包含xyz

字段判断

也可以使用搜索字符串对字段做定性判断:

样例 场景
e_search("field: *") 字段存在(任意值)
e_search('field: ""') 字段存在(至少包含一个子空串)
e_search("not field:*") 字段不存在
e_search('not field:""') 字段不存在
e_search('field==""') 字段存在, 值为空
e_search('field~=".+"') 字段存在, 值不为空
e_search('not field~=".+"') 字段不存在或值为空
e_search('not field==""') 字段不存在或值不为空

进一步参考

欢迎扫码加入官方钉钉群获得实时更新与阿里云工程师的及时直接的支持:
image

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
3月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
731 57
|
3月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
251 29
|
4月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
533 1
|
4月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
380 0
|
4月前
|
数据采集 运维 监控
|
6月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
705 4
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
823 54
|
12月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
363 9

相关产品

  • 日志服务