本文档主要为您介绍关于函数中字段提取模式参数的取值以及含义。
相关函数
下表为接收参数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 |
字段提取检查与覆盖模式
参数值 | 说明 |
---|---|
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