判断指定日志字段值是否满足正则表达式,返回字段匹配的判断结果,即 True 或 False。
f_match(field,regex=正则表达式,full=False)
参数说明如下:
参数 | 参数类型 | 是否必选 | 默认值 | 取值范围 | 说明 |
---|---|---|---|---|---|
field | String | 是 | / | / | 字段名。当指定字段不存在时,判断为条件不匹配。 |
regex | String | 是 | / | / | 正则表达式。 |
full | Bool | 否 | False |
| 是否完全匹配,默认为 False,即部分匹配。 例如: 正则表达式的值与字符串完全一致,则是完全匹配。 例如abcd与 |
场景:判断日志中 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" }
判断日志中是否有符合检索语句的内容,是则返回 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") # 全文检索,判断全文中是否包含关键词 byte 或 dance。 f_search('"byte dance"') # 全文检索,判断全文中是否包含关键词 byte dance,该关键词中包含空格。 # 键值检索 f_search('method: get') # 键值检索,判断 method 字段值中是否包含关键词 get。 f_search('company: "volc engine"') # 键值检索,判断 company 字段的值中是否包含关键词 volc engine,该关键词中包含空格。 f_search('company: byte dance') # 键值检索,判断 company 字段的值中是否包含关键词 byte 或 dance。 # 完全匹配 f_search('company== "byte dance"') # 通配符搜索。其中,星号(*)匹配零个或多个字符,半角问号(?)匹配一个字符。 f_search('company: do*y?n') # 模糊匹配,使用通配符星号(*)和半角问号(?) f_search('company: byt*dance') # 模糊匹配,使用通配符星号(*)。 f_search('company: tik?ok') # 模糊匹配,使用通配符半角问号(?)。 # 字段名转义 f_search('"中文字段": abc') # 中文字符,需使用双引号("")包裹。 f_search("\*a: value") # 字段名中包含特殊字符时,需使用反斜线(\)转义。 f_search("__tag__\:field: value") # 字段名中包含特殊字符时,需使用反斜线(\)转义。 # 正则匹配 f_search('company~="byt[\w]dance"') # 正则式匹配,用于判断 company 字段的值是否匹配包含byt+一个字母/数字/下划线+dance的字符串。 # 数字 f_search('amount: [10,200]') # 判断 amount 字段值是否在 [10,200] 之间。 f_search('distance >=10') # 判断 distance 字段值是否大于等于 10。 f_search('distance > 20') # 判断 distance 字段值是否大于 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