本文介绍函数中字段提取模式参数的取值以及含义。
相关函数
以下为使用字段提取模式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: 123 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