本文档主要为您介绍关于函数中字段提取模式参数的取值以及含义。

相关函数

下表为接收参数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') 目标字段被添加c: 123
e_set("c", "", mode='add') 目标字段被添加c:
e_set("a", "123", mode='add') 目标字段不变a:
add-auto e_set("c", "", mode='add-auto') 目标字段c不被添加。
fill e_set("c", "123", mode='fill') 目标字段被添加c: 123
e_set("c", "", mode='fill') 目标字段被添加c:
e_set("a", "123", mode='fill') 目标字段被修改a: 123
e_set("b", "123", mode='fill') 目标字段不变b: 100
fill-auto e_set("c", "", mode='fill-auto') 目标字段c不被添加。
overwrite e_set("c", "123", mode='overwrite') 目标字段被添加c: 123
e_set("c", "", mode='overwrite') 目标字段被添加c:
e_set("b", "200", mode='overwrite') 目标字段被修改b: 200
e_set("b", "", mode='overwrite') 目标字段被修改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