赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 数据加工
  6. 数据加工(旧版)
  7. 数据加工语法
  8. 通用参考
  9. 查询字符串语法

查询字符串语法

  • 通用参考
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

查询字符串语法是SLS DSL中用于快速过滤数据的语法,可以简化条件判断。本文介绍查询字符串的通用语法规则。

函数列表

使用以下函数时,您可以使用查询字符串语法。

类型

函数

场景

事件检查函数

e_search

使用查询字符串判断事件的字段值是否满足特定条件。

资源函数

res_log_logstore_pull

从Logstore中获取并返回表格结构的数据,支持使用查询字符串配置黑白名单进行过滤筛选。

res_rds_mysql

从RDS MySQL中获取并返回表格结构的数据,支持使用查询字符串配置黑白名单进行过滤筛选。

功能概览

不同搜索功能对字段搜索和全文搜索的支持情况如下表所示。

功能

字段搜索

全文搜索

子串搜索

支持

支持

通配符*?搜索

支持

支持

完全匹配搜索

支持

不支持

正则表达式搜索

支持

不支持

数值范围搜索

支持

不支持

数值比较

支持

不支持

关系and、or、not及组合

支持

支持

字符转义

在字符串查询语法中,需要对一些特殊字符,例如星号(*)、反斜线(\)等进行转义操作。

  • 字段名转义

    字段名不能使用半角双引号("")包裹,包含特殊字符时使用反斜线(\)转义。例如:

    • \*\(1+1\)\?: abc:使用反斜线(\)转义。

    • __tag__\:__container_name__: abc:使用反斜线(\)转义。

    • 中文字段: abc:中文不需要转义。

    • "content": abc:非法定义,字段名不能用半角双引号("")包裹。

  • 搜索值转义

    • 包含半角双引号("")或反斜线(\)时需用反斜线(\)转义,例如content: "abc\"xy\\z"。

      说明

      搜索值只能使用半角双引号("")包裹。您可以使用单引号('')包裹外层字符串,使用半角双引号("")包裹里层搜索值,例如:e_search("domain: '/url/test.jsp'")是错误的,正确的为e_search('domain: "/url/test.jsp"')。

    • 搜索星号(*)或半角问号(?)时需要使用反斜线(\)转义,否则会被视为通配符匹配。

    • 只包含中文、字母、数字、下划线(_)、短划线(-)、星号(*)或半角问号(?)这些特殊字符时,不需要用半角双引号("")包裹,其他情况需要使用半角双引号("")包裹。例如:

      • status: "\*\?()[]:=":使用半角双引号("")包裹,并使用反斜线(\)对星号(*)、半角问号(?)进行转义,其他字符不用转义。

      • content: ()[]:=:非法定义,需要使用半角双引号("")包裹。

      • status: active\*test、status: active\?test:字段值仅包含星号(*)、半角问号(?)及字母,只需要对星号(*)或半角问号(?)进行转义,不需要使用半角双引号("")包裹。

子串搜索

  • 全文搜索

    在所有字段中搜索子串。

    • 语法格式

      e_search('子串')
    • 示例

      • e_search('"错误"'):搜索中文子串。

      • e_search('"active error"'):搜索完整带空格的子串。

      • e_search('active error'):多个子串搜索,多个子串之间默认为OR关系。

  • 字段搜索

    在特定字段中搜索子串。

    • 语法格式

      e_search('...')
    • 示例

      • e_search('status: active'):子串搜索。

      • e_search('author: "john smith"'):带空格子串搜索。

      说明

      e_search('field: active error')相当于field:active OR "error",表示在field字段中搜索active或者全文搜索error。

通配符搜索

星号(*)表示零个或多个字符串,半角问号(?)表示一个字符,也可以表示一个宽字符(例如中文字符)。

  • 全文搜索

    在所有字段中搜索子串。

    • 语法格式

      e_search('子串')
    • 示例

      • e_search('active*test'):匹配零到多个字符,因为字符串中有星号(*),所以该字符串不需要使用半角双引号("")包裹。

      • e_search('发生*错误'):匹配零到多个字符,可以匹配发生错误,发生严重错误等。

      • e_search('active?good'):匹配一个字符,因为字符串中有半角问号(?),所以该字符串不需要使用半角双引号("")包裹。

      • e_search('ac*tive?good'):完全匹配。

      • e_search('ac*tive??go*od'):支持多个混合使用。

  • 字段搜索

    在特定字段中搜索子串。

    • 语法格式

      e_search('字段名:子串')
    • 示例

      • e_search('status: active*test'):匹配零到多个字符。

      • 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('status~= "\d+"'):status字段包含数字。

    • e_search('status~= "^\d+$"'):status字段等于数字。

数值比较

对数值进行比较。

  • 数值直接比较

    使用>、>=、=、<、<=进行比较。

    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
  • 数值范围比较:

    使用闭区间,支持使用星号(*)表示无边界。

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

逻辑关系

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

逻辑关系

关键字

且

and,AND,&&等,不区分大小写。

或

or,OR等,不区分大小写。

否

not,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('not field:*'):字段不存在。

  • e_search('not field:""'):字段不存在。

  • e_search('field: "?"'):字段存在且值不为空。

  • e_search('field==""'):字段存在且值为空。

  • e_search('field~=".+"'):字段存在且值不为空。

  • e_search('not field~=".+"'):字段不存在或值为空。

  • e_search('not field==""'):字段不存在或值不为空。

相关文章

标准编码格式 2025-04-22 10:54

本文列举了日志服务中支持的标准编码格式。

查询字符串语法 2025-04-22 10:54

查询字符串语法是SLS DSL中用于快速过滤数据的语法,可以简化条件判断。本文介绍查询字符串的通用语法规则。 函数列表

字段提取模式 2025-04-22 10:54

本文介绍函数中字段提取模式参数的取值以及含义。 相关函数 以下为使用字段提取模式mode参数的函数列表及其参数默认值。

正则表达式 2025-04-22 10:54

本文介绍正则表达式的匹配方式以及特殊字符的转义处理。 完全匹配 正则表达式的值与字符串完全一致,则是完全匹配。例如

GROK模式参考 2025-04-22 10:54

GROK是一种采用组合多个预定义的正则表达式,用来匹配分割文本并映射到关键字的工具。通常用来对日志数据进行处理。本文档主要介绍GROK的模式说明以及常用语法。 GROK模式及说明如下表所示。

JMES语法 2025-04-22 10:54

本文主要介绍JMES的常用语法和示例。 JMES是一个增强型的JSON查询计算语言,不仅可以对JSON数据进行提取,还可以做计算与转换。关于JMES语法的详细介绍请参见JMES Tutorial。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号