You need to enable JavaScript to run this app.
导航

事件检查函数

最近更新时间2023.11.13 16:31:41

首次发布时间2023.09.27 14:09:14

f_match 函数

判断指定日志字段值是否满足正则表达式,返回字段匹配的判断结果,即 True 或 False。

函数语法/格式

f_match(field,regex=正则表达式,full=False)

参数说明如下:

参数

参数类型

是否必选

默认值

取值范围

说明

field

String

/

/

字段名。当指定字段不存在时,判断为条件不匹配。

regex

String

/

/

正则表达式。

full

Bool

False

  • False
  • True

是否完全匹配,默认为 False,即部分匹配。 例如: 正则表达式的值与字符串完全一致,则是完全匹配。 例如abcd与\w+完全匹配。您可以在开头与结尾添加^$将部分匹配的场景变成完全匹配。

函数示例

  • 场景:判断日志中 content 字段是否与正则表达式匹配。

  • 加工规则:

    f_set("f_match_part",f_match("content","12"))
    f_set("f_match_full",f_match("content","12",True))
    
  • 日志样例:

    {
        "content": "1234"
    }
    
  • 加工结果:

    {
        "content": "1234",
        "f_match_part": "True",
        "f_match_full": "False"
    }
    

f_search 函数

判断日志中是否有符合检索语句的内容,是则返回 True,否则返回 False。

函数语法/格式

f_search(query=检索条件)

参数说明如下:

参数

参数类型

是否必选

默认值

取值范围

说明

query

string

/

/

查询字符串,用于快速过滤日志的查询字符串。详细信息请参考查询字符串语法

函数示例

  • 场景:判断日志 count 字段中是否有大于 0 的值。

  • 加工规则:

    f_set("f_search",f_search("count > 0"))
    
  • 日志样例:

    {
        "count": "100"
    }
    
  • 加工结果:

    {
        "count": "100",
        "f_search": "True"
    }
    

常见语法规则的示例如下:

# 全文
f_search("byte dance")    # 全文检索,其中两个子串是 OR 关系。
f_search('"byte dance"')   # 全文检索,检索关键词是一个完整子串。

# 字段:字符串
f_search("method: get")         # 搜索指定单词。
f_search('company: "volc engine"')   # 搜索一个带空格的子串。
f_search('company: byte dance')   # 相当于 company:byte OR "dance"。

# 完全匹配
f_search('company== "byte dance"')  

# 通配符搜索,其中星号(*)匹配零个或多个字符,半角问号(?)匹配一个字符。
f_search('company: do*y?n')  # 完全匹配。
f_search('company: byt*dance')   # byt*dance中仅包含星号(*),可以不使用双引号("")包裹。
f_search('company: tik?ok')    # tik?ok中仅包含半角问号(?),可以不使用双引号("")包裹。

# 字段名转义
f_search('"中文字段": abc')                     # 直接写中文。
f_search("\*a: value")              # 特殊字符用反斜线(\)转义。
f_search("__tag__\:field: value")  # 用反斜线(\)转义。

# 正则匹配
f_search('company~="byt[\w]dance"')   # 正则式匹配。

# 数字
f_search('amount: [10,200]')  # >=10 and <=200
f_search('distance >=10')           # >= 10
f_search('distance > 20')            # > 20

# 使用关系运算符
f_search('byte OR dance') # 关系运算符需要使用大写
f_search('byte AND  ( NOT dancer OR tiktok)')
f_search('byte AND (dancer OR dance)')
f_search("byte || !dance")   # OR NOT
f_search("byte || dance")    # OR
f_search("byte && dance")    # AND