全部產品
Search
文件中心

Simple Log Service:事件檢查函數

更新時間:Jun 30, 2024

本文介紹事件檢查函數的文法規則,包括參數解釋、函數樣本等。

函數列表

類型

函數

說明

基本方法

e_has

判斷日誌欄位是否存在。

e_not_has

判斷日誌欄位是否存在。

支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

運算式函數

e_search

提供一種簡化,類似Lucene文法的事件搜尋方式。

支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_match

判斷當前日誌欄位的值是否滿足Regex。

支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_match_any

判斷當前日誌欄位的值是否滿足Regex,任意欄位匹配返回True,否則返回False。

e_match_all

判斷當前日誌欄位的值是否滿足Regex,所有欄位匹配返回True,否則返回False。

同時,事件檢查函數可以與如下運算式函數配合使用:

類型

函數

說明

基本判斷

op_and

邏輯and運算。

op_or

邏輯or運算。

op_not

邏輯not運算。

op_nullif

判斷兩個運算式的取值。

op_ifnull

返回第一個值不為None的運算式的值。

op_coalesce

返回第一個值不為None的運算式的值。

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~="Regex"')   # 正則匹配。
    
    # 數字
    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

判斷當前日誌欄位的值是否滿足Regex。

  • 函數格式

    e_match(key, regular_expression, full=True)
    說明

    e_match函數通常與op_notop_and或者op_or結合使用。

  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    key

    String

    欄位名。當欄位不存在時,視為當前子條件不匹配。

    例如:欄位f1不存在,那麼e_match("f1", ...)結果為False

    regular_expression

    String

    Regex。如果需要使用純粹字串匹配時(非Regex),可以使用函數str_regex_escape修飾Regex。

    full

    Bool

    是否完全符合,預設為True表示完全符合。關於匹配模式請參見Regex

  • 返回結果

    返回欄位匹配的判斷結果True或False。

  • 函數樣本

    判斷欄位k1的值是否為數字。

    • 原始日誌

      k1: 123
    • 加工規則

      e_set("match",e_match("k1",r'\d+'))
    • 加工結果

      k1: 123
      match: True
  • 更多參考

    支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料

e_match_any

判斷當前日誌欄位的值是否滿足Regex,任意欄位匹配返回True,否則返回False。

  • 函數格式

    e_match_any(key1, regular_expression1, key2, regular_expression2, ..., full=True)
    說明
    • 函數中keyregular_expression必須成對出現。

    • e_match_any函數通常與op_notop_and或者op_or結合使用。

  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    key

    String

    欄位名。當欄位不存在時,視為當前子條件不匹配。

    例如:欄位f1不存在,那麼e_match_any("f1", ...)結果為False

    regular_expression

    String

    正則模式。如果需要使用純粹字串匹配時(非正則),可以使用函數str_regex_escape修飾正則。

    full

    Bool

    是否完全符合,預設為True表示完全符合。關於匹配模式請參見Regex

  • 返回結果

    返回欄位匹配的判斷結果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

判斷當前日誌欄位的值是否滿足Regex,所有欄位匹配返回True,否則返回False。

  • 函數格式

    e_match_all(key1, regular_expression1, key2, regular_expression2, ..., full=True)
    說明
    • 函數中keyregular_expression必須成對出現。

    • e_match_all函數通常與op_notop_and或者op_or結合使用。

  • 參數說明

    參數名稱

    參數類型

    是否必填

    說明

    欄位名

    String

    欄位名。當欄位不存在時,視為當前子條件不匹配。

    例如:欄位f1不存在,那麼e_match_all("f1", ...)結果為False

    正則

    String

    正則模式。如果需要使用純粹字串匹配時(非正則),可以使用函數str_regex_escape修飾正則。

    full

    Bool

    是否完全符合,預設為True表示完全符合。關於匹配模式請參見Regex

  • 返回結果

    返回欄位匹配的判斷結果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
  • 更多參考

    支援和其他函數組合使用。相關樣本,請參見調用函數清洗資料