详情页标题前

阿里云日志服务SLS查询字符串语法-云淘科技

详情页1

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

函数列表

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

类型 函数 场景
事件检查函数 e_search 使用查询字符串判断事件的字段值是否满足特定条件。
资源函数 res_log_logstore_pull 从Logstore中获取并返回表格结构的数据,支持使用查询字符串配置黑白名单进行过滤筛选。
res_rds_mysql 从RDS MySQL中获取并返回表格结构的数据,支持使用查询字符串配置黑白名单进行过滤筛选。
事件映射函数 e_search_table_map、e_search_dict_map 对关键字是查询字符串及其匹配的值的字典数据进行映射。

功能概览

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

功能 字段搜索 全文搜索
子串搜索 支持 支持
通配符*?搜索 支持 支持
完全匹配搜索 支持 不支持
正则表达式搜索 支持 不支持
数值范围搜索 支持 不支持
数值比较 支持 不支持
关系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\*teststatus: 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

逻辑关系

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

逻辑关系 关键字
andAND&&等,不区分大小写。
orOR等,不区分大小写。
notNOT!等,不区分大小写。

样例:

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==""'):字段不存在或值不为空。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/164357.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云RDS数据库【活动/调价】RDS SQL Server 2008 R2本地盘升级补贴-云淘科技

    阿里云自2022年11月01日起对RDS SQL Server 2008 R2本地盘实例开展版本升级补贴活动,活动为期17个月。 活动补贴时间 2022年11月01日~2024年03月31日 说明 建议您在活动时间内尽快对RDS SQL Server 2008 R2本地盘实例进行升级。如果您在非活动时间内对此版本实例进行了升级,阿里云不发放任何代金券。 补贴…

    阿里云数据库 2023年12月9日
  • 阿里云日志服务SLSget_logs-云淘科技

    调用CLI命令查询指定Project下某个Logstore中的日志。该命令适用于精确查询场景。在使用该命令时,您需要构造JSON格式的request请求配置文件,在JSON文件中,您可以灵活、准确地配置查询请求。 命令格式 aliyunlog log get_logs –request= [–access-id=] [–access-key=] [–…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云大数据开发治理平台 DataWorks功能发布记录 2022年之前-云淘科技

    本文为您介绍2022年之前DataWorks产品功能和对应的文档动态。 MaxCompute的重要功能发布详情请参见产品重大更新。 2021-12 功能名称 功能描述 发布时间 发布地域 相关文档 数据质量支持选择规则模板来批量配置数据质量规则。 DataWorks数据质量支持选择规则模板来批量配置数据质量规则,简化配置难度: 支持选择表级规则模板,批量给多…

  • 阿里云负载均衡UpdateSecurityPolicyAttribute – 更新安全策略属性-云淘科技

    更新安全策略属性,如安全协议版本、加密套件。 接口说明 使用说明 UpdateSecurityPolicyAttribute接口属于异步接口,即系统返回一个请求ID,但该安全策略属性尚未更新成功,系统后台的更新任务仍在进行。您可以调用ListSecurityPolicies查询安全策略属性的更新状态: 当安全策略属性处于Configuring状态时,表示安全…

    阿里云负载均衡 2023年12月10日
  • 阿里云日志服务SLS开启域间分析-云淘科技

    开启域间分析后,系统将自动创建数据加工任务,生成具有网段信息的VPC流日志,用于分析不同网段之间的流量情况。 前提条件 已配置Flowlog日志中心。具体操作,请参见设置Flowlog日志中心。背景信息日志服务已预设多个网段,如下图所示。当您需要分析不同网段之间的流量情况时,只需一键开启域间分析功能即可。 如果预设网段未满足您的需求,您可以自定义添加网段。 …

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。