本文档主要介绍映射富化函数的语法规则,包括参数解释、函数示例等。

函数列表

类型 函数 说明
字段映射 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:  正常

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

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

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