云日志服务 LTS-字段值提取函数:e_kv
e_kv
通过quote提取多个源字段中的键值对信息。
- 函数格式
e_kv(源字段或源字段列表, sep="=", quote='"', escape=false, prefix="", suffix="", mode="fill-auto")
- 参数说明
参数名称
参数类型
是否必填
说明
源字段或源字段列表
字符串或字符串列表
是
字段名或多个字段名的列表。
sep
String
否
关键字与值的正则表达式的分隔符串,默认为=,不限于单个字符。
说明 可以使用非捕获分组,但不能使用捕获分组。
quote
String
否
引用符,用于包裹值的字符。默认为"。
说明 提取的动态键值对的值一般需要quote来包括,例如:a="abc",b="xyz"如果提取对象中不包含,则只提取如下字符集的值:中文字母数字_-.%~。例如a=中文ab12_-.%~|abc b=123可以提取a: 中文ab12_-.%~,b: 123。
escape
Boolean
否
是否自动提取反转字符的值。默认为false表示否。例如key="abc\"xyz"默认提取字段key的值为abc\,设置escape=true时,提取的值为abc"xyz。
prefix
String
否
给提取的字段名添加前缀。
suffix
String
否
给提取的字段名添加后缀。
mode
String
否
字段的覆盖模式。默认为fill-auto。
- 返回结果
返回附带新字段值的日志。
- 函数示例
- 示例1:使用默认分隔符=提取键值对信息。
- 测试数据
{ "http_refer": "https://video.developer.aadoc.com/s?q=asd&a=1&b=2" }
如果测试数据为request_uri: a1=1&a2=&a3=3,a2值为空,则使用e_kv()函数无法提取出a2。您可以使用e_regex()函数进行提取,例如e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"},mode="overwrite")。
- 加工规则
e_kv("http_refer")
- 加工结果
http_refer: https://video.developer.aadoc.com/s?q=asd&a=1&b=2 q: asd a: 1 b: 2
- 测试数据
- 示例2:给字段名增加前缀和后缀。
- 测试数据
{ "http_refer": "https://video.developer.aadoc.com/s?q=asd&a=1&b=2" }
- 加工规则
e_kv( "http_refer", sep="=", quote='"', escape=false, prefix="data_", suffix="_end", mode="fill-auto", )
- 加工结果
http_refer: https://video.developer.aadoc.com/s?q=asd&a=1&b=2 data_q_end: asd data_a_end: 1 data_b_end: 2
- 测试数据
- 示例3:提取字段content2中的键值对信息,使用escape参数提取反转字符的值。
- 测试数据
{ "content2": "k1:\"v1\\"abc\", k2:\"v2\", k3: \"v3\"" }
- 加工规则
e_kv("content2", sep=":", escape=true)
- 加工结果
content2: k1:"v1\"abc", k2:"v2", k3: "v3" k1: v1"abc k2: v2 k3: v3
- 测试数据
- 示例1:使用默认分隔符=提取键值对信息。
- 更多参考
支持和其他函数组合使用。