本文介绍函数中字段提取模式参数的取值以及含义。

相关函数

以下为使用字段提取模式mode参数的函数列表及其参数默认值。

分类 函数 mode的默认值
字段值赋值函数 e_set overwrite
字段值提取函数 e_regex fill-auto
e_json fill-auto
e_kv fill-auto
e_csv、e_psv、e_tsv fill-auto
e_kv_delimit fill-auto
e_anchor overwrite
e_syslogrfc overwrite
映射富化函数 e_dict_map fill-auto
e_table_map fill-auto
e_search_dict_map overwrite
e_search_table_map fill-auto

字段提取检查与覆盖模式

下表介绍字段提取模式mode参数的不同取值以及说明。
参数值 说明
fill 当目标字段不存在或者值为空时,设置目标字段。
fill-auto 当新值非空,且目标字段不存在或者值为空时,设置目标字段。
add 当目标字段不存在时,设置目标字段。
add-auto 当新值非空,且目标字段不存在时,设置目标字段。
overwrite 总是设置目标字段。
overwrite-auto 当新值非空,设置目标字段。
以下通过示例的方式对不同模式进行说明:
  • 原始日志
    a:         # 空值
    b: 100
  • 加工示例
    模式 示例 加工结果
    add e_set("c", "123", mode='add')
    a:# 空值
    b: 100
    c: 123
    e_set("c", "", mode='add')
    a:# 空值
    b: 100
    c:
    e_set("a", "123", mode='add')
    a:# 空值
    b: 100
    add-auto e_set("c", "", mode='add-auto') 不添加字段c,原始日志不变。
    fill e_set("c", "123", mode='fill')
    a:# 空值
    b: 100
    c: 123
    e_set("c", "", mode='fill')
    a:# 空值
    b: 100
    c:
    e_set("a", "123", mode='fill')
    a:# 空值
    b: 100
    e_set("b", "123", mode='fill') 目标字段不变,仍为b: 100
    fill-auto e_set("c", "", mode='fill-auto') 不添加字段c,原始日志不变。
    overwrite e_set("c", "123", mode='overwrite')
    a:# 空值
    b: 100
    c: 123
    e_set("c", "", mode='overwrite')
    a:# 空值
    b: 100
    c: 
    e_set("b", "200", mode='overwrite')
    a:# 空值
    b: 200
    e_set("b", "", mode='overwrite')
    a:# 空值
    b: 
    overwrite-auto e_set("b", "", mode='overwrite-auto') 目标字段不变,仍为b: 100

字段名提取约束

适用于e_json、e_kv,e_kv_delimit、e_regex等函数。

提取的字段名必须满足字符条件,否则会被丢弃。不支持正则表达式u'_*[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\u4e00-\u9fa5\u0800-\u4e00\\w\\.\\-]*'。例如123=abc __1__:100 1k=200 {"123": "456"}等字段名会被丢弃。

示例:使用默认的字段约束名。
  • 原始日志
    data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
  • 加工规则
    e_json(
        "data",
        fmt="parent",
        sep="@",
        prefix="__",
        suffix="__",
        include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*",
        mode="fill-auto",
    )
  • 加工结果
    data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
    data@__k1__:100
    k2@__k3__:200
    k4@__k5__:300