本文介紹事件檢查函數的語法規則,包括參數解釋、函數示例等。
函數列表
類型 | 函數 | 說明 |
基本方法 | 判斷日志字段是否存在。 | |
判斷日志字段是否存在。 支持和其他函數組合使用。相關示例,請參見調用函數清洗數據。 | ||
表達式函數 | 提供一種簡化,類似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_not_has
判斷字段是否不存在。
函數格式
e_not_has("key")
參數說明
參數名稱
參數類型
是否必填
說明
key
String
是
字段名稱。
返回結果
字段不存在返回True,存在返回False。
函數示例
判斷日志是否存在content字段,不存在則保留該日志,否則丟棄該日志。
原始日志
content: 123
加工規則
e_if_else(e_not_has("content"),KEEP,DROP)
加工結果
日志被丟棄。
更多參考
支持和其他函數組合使用。相關示例,請參見調用函數清洗數據。
e_search
提供一種簡化,類似Lucene語法的事件搜索方式。
函數格式
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
更多參考
支持和其他函數組合使用。相關示例,請參見調用函數清洗數據。
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("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
更多參考
支持和其他函數組合使用。相關示例,請參見調用函數清洗數據。