事件检查函数
本文介绍事件检查函数的语法规则,包括参数解释、函数示例等。
函数列表
类型 |
函数 |
说明 |
基本方法 |
判断日志字段是否存在。 |
|
判断日志字段是否不存在。支持和其他函数组合使用。 |
||
表达式函数 |
提供一种简化,类似Lucene语法的事件搜索方式。支持和其他函数组合使用。 |
|
判断当前日志字段的值是否满足正则表达式。支持和其他函数组合使用。 |
||
判断当前日志字段的值是否满足正则表达式,任意字段匹配返回true,否则返回false。 |
||
判断当前日志字段的值是否满足正则表达式,所有字段匹配返回true,否则返回false。 |
同时,事件检查函数可以与如下表达式函数配合使用:
e_has
判断字段是否存在。
- 函数格式
e_has("key")
- 参数说明
参数名称
参数类型
是否必填
说明
key
String
是
日志的字段名。
- 返回结果
字段存在返回true,不存在返回false。
- 函数示例
判断日志是否存在content字段,存在则保留,不存在则丢弃。
- 测试数据
{ "content": 123 }
- 加工规则
e_keep(e_has("content"))
- 加工结果
content: 123
- 测试数据
e_search
提供一种简化,类似Lucene语法的事件搜索方式。
该功能在邀测期间,e_search函数处理日志流量比较小,请谨慎使用。
- 函数格式
e_search(querystring)
- 参数说明
参数名称
参数类型
是否必填
说明
querystring
String
是
查询字符串,用于快速过滤日志的查询字符串。
- 返回结果
满足条件返回true,否则返回false。
- 函数参考示例
# 全文 e_search("active error")# 全文:两个子串是OR关系,进行搜索。 e_search('"active error"') # 全文:一个子串搜索。 # 字段:字符串 e_search("status: active") # 单词搜索。 e_search('author: "john smith"') # 带空格子串搜索。 e_search('field: active error') # 相当于field:active OR "error"。 # 完全匹配 e_search('author== "john smith"') # 通配符搜索,星号(*)匹配零个或多个字符,半角问号(?)匹配一个字符。 e_search("status: active*test") # active*test中仅包含星号(*),可以不使用双引号("")包裹。 e_search("status: active?good") # active?good中仅包含半角问号(?),可以不使用双引号("")包裹。 e_search("status== ac*tive?good") # 完全匹配。 # 搜索值转义,星号(*)或问号(?)需要使用反斜线(\)转义。 e_search('status: "\*\?()[]:="') # \*\?()[]:=中包含特殊字符,需要使用双引号("")包裹,除了星号(*)、半角问号(?)和反斜线(\)需要转义外,其他不用转义。 e_search("status: active\*test") # active\*test中仅包含星号(*),可以不使用双引号("")包裹。 e_search("status: active\?test") # active\?test中仅包含半角问号(?),可以不使用双引号("")包裹。 # 字段名转义 e_search("\*\(1+1\)\?: abc") # 字段名不能用双引号("")包裹,特殊字符用反斜线(\)转义。 e_search("__tag__\:__container_name__: abc") # 用反斜线(\)转义。 e_search("中文字段: abc") # 直接写中文。 # 正则匹配 e_search('content~="正则表达式"') # 正则匹配。 # 数字 e_search('count: [100, 200]') # >=100 and <=200 e_search('count: [*, 200]') # <=200 e_search('count: [200, *]') # >=200 e_search('age >= 18') # >= 18 e_search('age > 18') # > 18 # 使用关系运算符 e_search("abc OR xyz") # 关系运算符不区分大小写,OR和or效果一样。 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
- 函数示例
- 测试数据
{ "desc": "john smith is a player" }
- 加工规则
e_if(e_search('desc: "john smith"'), e_set("found", "Yes"))
- 加工结果
{ "found": "Yes", "desc": "john smith is a player" }
- 测试数据
- 更多参考
支持和其他函数组合使用。
e_match
判断当前日志字段的值是否满足正则表达式。
- 函数格式
e_match(key, regular_expression, full=true)
e_match函数通常与op_not、op_and或者op_or结合使用。
- 参数说明
参数名称
参数类型
是否必填
说明
key
String
是
字段名。当字段不存在时,视为当前子条件不匹配。例如:字段f1不存在,那么e_match("f1", ...)结果为false。
regular_expression
String
是
正则表达式。如果需要使用纯粹字符串匹配时(非正则表达式),可以使用函数str_regex_escape修饰正则表达式。
full
Bool
否
是否完全匹配,默认为true表示完全匹配。
- 返回结果
返回字段匹配的判断结果true或false。
- 函数示例
判断字段k1的值是否为数字。
- 测试数据
{ "k1": 123 }
- 加工规则
e_set("e_match", e_match("k1",r'\d+'))
- 加工结果
k1: 123 match: true
- 测试数据
- 更多参考
支持和其他函数组合使用。
e_match_any
判断当前日志字段的值是否满足正则表达式,任意字段匹配返回true,否则返回false。
- 函数格式
e_match_any(key1, regular_expression1, key2, regular_expression2, ..., full=true)
- 函数中key和regular_expression必须成对出现。
- e_match_any函数通常与op_not、op_and或者op_or结合使用。
- 参数说明
参数名称
参数类型
是否必填
说明
key
String
是
字段名。当字段不存在时,视为当前子条件不匹配。例如:字段f1不存在,那么e_match_any("f1", ...)结果为false。
regular_expression
String
是
正则模式。如果需要使用纯粹字符串匹配时(非正则),可以使用函数str_regex_escape修饰正则。
full
Bool
否
是否完全匹配,默认为true表示完全匹配。
- 返回结果
返回字段匹配的判断结果true或false。
- 函数示例
e_match_any匹配,任意字段匹配则返回true。
- 测试数据
{ "k1": 123, "k2": "abc", "k3": "abc123" }
- 加工规则
e_set("match",e_match_any('k1', r'\d+', 'k2', '.+'))
- 加工结果
k1:123 k2:abc k3:abc123 match:true
- 测试数据
- 更多参考
支持和其他函数组合使用。
e_match_all
判断当前日志字段的值是否满足正则表达式,所有字段匹配返回true,否则返回false。
- 函数格式
e_match_all(key1, regular_expression1, key2, regular_expression2, ..., full=true)
- 函数中key和regular_expression必须成对出现。
- e_match_all函数通常与op_not、op_and或者op_or结合使用。
- 参数说明
参数名称
参数类型
是否必填
说明
字段名
String
是
字段名。当字段不存在时,视为当前子条件不匹配。例如:字段f1不存在,那么e_match_all("f1", ...)结果为false。
正则
String
是
正则模式。如果需要使用纯粹字符串匹配时(非正则),可以使用函数str_regex_escape修饰正则。
full
Bool
否
是否完全匹配,默认为true表示完全匹配。
- 返回结果
返回字段匹配的判断结果true或false。
- 函数示例
- 测试数据
{ "k1": 123, "k2": "abc", "k3": "abc123" }
- 加工规则
e_set("match", e_match_all("k1", r"\d+", "k2", r"\d+"))
- 加工结果
k1:123 k2:abc k3:abc123 match:false
- 更多参考
支持和其他函数组合使用。
- 测试数据