最近更新时间:2023.11.13 16:31:41
首次发布时间:2023.09.27 14:09:14
判断指定日志字段值是否满足正则表达式,返回字段匹配的判断结果,即 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") # 全文检索,其中两个子串是 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