本文档主要介绍映射富化函数的语法规则,包括参数解释、函数示例等。
函数列表
类型 | 函数 | 说明 |
---|---|---|
字段映射 | e_dict_map | 根据输入字段的值,通过字典映射出一个新的字段。 |
e_table_map | 根据输入字段的值,在表格中查找对应的行,返回对应字段的值。 | |
搜索映射 | e_search_dict_map | 对关键字是查询字符串,以及其匹配的值的字典数据进行映射。 |
e_search_table_map | 对某列是查询字符串,以及其匹配的值的表格数据进行映射。 |
e_dict_map
- 函数格式
e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite")
- 参数说明
参数名称 参数类型 是否必填 说明 data Dict 是 表示映射关系的字典,标准的关键字/值的配对,要求关键字必须是字符串。 field String或者String List 是 一个字段名或者多个字段名的列表。多个字段时: - 依次对匹配到的值进行映射。
- 如果匹配命中多条日志,且
mode
的取值为overwrite时,则最后一个会覆盖前面的结果。 - 当没有匹配到任何字段,则会使用
missing
作为匹配到的值。
output_field String 是 输出字段的名称。 case_insensitive Bool 否 匹配时大小写是否不敏感,默认为True表示不敏感。 说明 如果字典中存在同一个关键字的不同大小写,且case_insensitive
设置为True时,会优先选择大小写完全匹配的值,如果没有,则会随机选择一个。missing String 否 无匹配字段时的目标字段的值。默认为None表示不做任何操作。 说明 如果字典中包含默认匹配*
,由于*
的优先级高于missing
,此时missing
将不起作用。mode String 否 字段的覆盖模式。默认为overwrite。更多字段详情请参见字段提取检查与覆盖模式。 - 返回结果
返回附带了新字段值的事件。
- 函数示例
- 示例1
原始日志:
data: 123 pro: 1
加工规则:e_dict_map({"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}, "pro", "protocol")
加工结果:data: 123 pro: 1 protocol: TCP
- 示例2
原始日志(三条日志):
status: 500
status: 400
status: 200
加工规则:e_dict_map({"400": "错误", "200": "正常", "*": "其他"}, "status", "message")
加工结果:status: 500 message: 其他
status: 400 message: 错误
status: 200 message: 正常
- 示例1
e_table_map
- 函数格式
e_table_map(data, field, output_fields, missing=None, mode="fill-auto")
- 参数说明
参数名称 参数类型 是否必填 说明 data 表格 是 多列的值映射表格。 field String、String List或Tuple List 是 事件中映射到表格的源字段。如果事件中不存在对应字段,则不进行任何操作。 output_fields String、String List或Tuple List 是 表格中映射出的字段。 missing String 否 无匹配字段时的目标字段的值。默认为None表示不做任何操作。如果目标字段是多列,则 missing
可以是一个长度与目标字段数一致的默认值列表。说明 如果字典中包含默认匹配*
,由于*
的优先级高于missing
,此时missing
将不起作用。mode String 否 字段的覆盖模式。默认为fill-auto。关于更多字段值及含义参见字段提取检查与覆盖模式。 - 返回结果
返回附带了新字段值的事件。
- 默认匹配与
missing
字典中默认匹配
*
的优先级高于missing
,因此如果字典中存在*
关键字时,missing
将不起作用。支持单个列的某个值是*
,表示一定匹配。例如:c1,c2,d1,d2 c1,*,1,1 c2,*,2,2, *,*,0,0
- 函数示例
- 示例1:输出一个字段。
原始日志:
data: 123 city: nj
加工规则:e_table_map(tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province")
加工结果:data: 123 city: nj province: js
- 示例2:输出两个字段。
原始日志:
data: 123 city: nj
加工规则:e_table_map(tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", ["province", "pop"])
加工结果:data: 123 city: nj province: js pop: 800
- 示例3:tab_parse_csv的sep使用。
原始日志:
data: 123 city: nj
加工规则:e_table_map(tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep='#'), "city", ["province", "pop"])
加工结果:data: 123 city: nj province: js pop: 800
- 示例4:tab_parse_csv的quote使用。
原始日志:
data: 123 city: nj
加工规则:e_table_map(tab_parse_csv('city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|', quote='|'), "city", ["province", "pop"])
加工结果:data: 123 city: nj province: js pop: 800
- 示例5:日志匹配字段与table字段不一样。
原始日志:
data: 123 cty: nj
加工规则:e_table_map(tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty","city")], "province")
加工结果:data: 123 cty: nj province: js
- 示例6:日志匹配字段与table字段不一样,并且对输出字段进行重命名。
原始日志:
data: 123 cty: nj
加工规则:e_table_map(tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty","city")], [("province","pro")])
加工结果:data: 123 cty: nj pro: js
- 示例1:输出一个字段。
e_search_dict_map
- 功能介绍
关键字是查询字符串,值是匹配的值的字典进行映射。
- 函数格式
e_search_dict_map(data, output_field, multi_match=False, multi_join=" ", missing=None, mode="overwrite")
- 参数说明
参数名称 参数类型 是否必填 说明 data Dict 是 映射字典,标准的关键字/值的配对,要求关键字必须是搜索字符串。关于搜索字符串具体请参见dct_get函数。 output_field String 是 输出字段的名称。 multi_match Bool 否 是否允许匹配多个字段。默认为False表示否,会返回匹配到的第一个字段值。支持使用 multi_join
拼接多个匹配的值。multi_join String 否 匹配多个字段时,多值的连接字符串,默认为空格。当 multi_match
值为True时生效。missing String 否 无匹配时的目标字段的值。默认为None表示不做任何操作。 说明 如果字典中包含默认匹配*
,由于*
的优先级高于missing
,此时missing
将不起作用。mode String 否 字段的覆盖模式。默认为overwrite。更多字段详情请参见字段提取检查与覆盖模式。 - 返回结果
返回查询匹配中后的映射结果。
- 函数示例
- 示例1:匹配模式。
原始日志:
data:123 pro:1
加工规则:e_search_dict_map ({"pro==1": "TCP", "pro==2": "UDP", "pro==3": "HTTP"}, "protocol")
加工结果:data:123 pro:1 protocol:TCP
- 示例2:
原始日志: 根据字段值的不同开头进行映射。
status:200,300
加工规则:e_search_dict_map ({"status:2??": "ok", "status:3??": "redirect", "status:4??": "auth", "status:5??": "server_error"}, "status_desc", multi_match=True, multi_join="测试")
加工结果:status:200,300 status_desc: ok测试redirect
- 示例1:匹配模式。
e_search_table_map
- 功能介绍
根据某列的值是查询字符串,其他列是匹配的值的表格进行映射。
- 函数格式
e_search_table_map(data, inpt, output_fields, multi_match=False, multi_join=" ", missing=None, mode="fill-auto")
- 参数说明
参数名称 参数类型 是否必填 说明 data 表格 是 搜索表格,表格某一列必须是搜索字符串。 inpt String 是 表格中的用于匹配搜索的字段名。 output_fields String,String List或Tuple List 是 表格中映射出的字段,可以是字符串、列表或者其名称映射元组的列表。 multi_match Bool 否 是否允许匹配多个字段。默认为False表示否,会返回匹配到的第一个字段值。支持使用 multi_join
来拼接多个匹配的值。multi_join String 否 匹配多个字段时,多值的连接字符串,默认为空格。当 multi_match
值为True时生效。missing String 否 无匹配时的目标字段的值。默认为None表示不做任何操作。 说明 如果字典中包含默认匹配*
,由于*
的优先级高于missing
,此时missing
将不起作用。mode String 否 字段的覆盖模式。默认为fill-auto。 - 搜索表格
搜索列名称 类型1 类型2 content: guide and title:~"\w guide"'
guide user content: city and title:~"\w shanghai"
food home - 返回结果
返回查询匹配中后的映射结果。
- 函数示例
- 示例1:简单模式。
原始日志:
data: 123 city: sh
加工规则:e_search_table_map(tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"), "search", ["pop", "province"])
加工结果:data: 123 city: sh province: sh pop: 2000
- 示例3:overwrite模式。
原始日志:
data: 123 city: nj province:
加工规则:e_search_table_map(tab_parse_csv("search,pop,province\ncity==nj,800,js\ncity==sh,2000,sh"), "search", "province",mode="overwrite")
加工结果:data: 123 city: nj province: js
- 示例2:missing模式,在table中没有province。
原始日志:
data: 123 city: wh province:
加工规则:e_search_table_map(tab_parse_csv("search,pop,province\ncity==nj,800,\ncity==sh,2000,sh"), "search", "province",missing="Unknown")
加工结果:data: 123 city: wh province: Unknown
- 示例4:multi_match模式。
原始日志:
data: 123 city: nj,sh province:
加工规则:e_search_table_map(tab_parse_csv("search,pop,province\ncity:nj,800,js\ncity:sh,2000,sh"), "search", "province",multi_match=True, multi_join=",")
加工结果:data: 123 city: nj,sh province: js,sh
- 示例1:简单模式。