云日志服务 LTS-提取字符串动态键值对:关键字提取

时间:2024-10-21 11:43:44

关键字提取

  1. 示例1

    以k1: q=asd&a=1&b=2&__1__=3日志为例,如果要对该格式的日志作关键字和值提取,三种方案如下:

    • e_kv函数
      • 原始日志
        {
            "k1":"q=asd&a=1&b=2&__1__=3"
        }
      • 加工规则
        e_kv("k1")
      • 加工结果
        {
        	"q": "asd",
        	"a": 1,
        	"b": 2,
        	"k1": "q=asd&a=1&b=2&__1__=3",
        	"__1__": 3
        }
    • e_kv_delimit函数
      • 原始日志
        {
            "k1":"q=asd&a=1&b=2&__1__=3"
        }
      • 加工规则
        # 以&分隔键值后,用&分隔提取出关键字
        e_kv_delimit("k1", pair_sep=r"&")
      • 加工结果
        {
        	"q": "asd",
        	"a": 1,
        	"b": 2,
        	"k1": "q=asd&a=1&b=2&__1__=3",
        	"__1__": 3
        }
    • e_regex函数
      • 原始日志
        {
            "k1":"q=asd&a=1&b=2&__1__=3"
        }
      • 加工规则
        # 自行指定字符集提取关键字和值
        e_regex("k1",r"(\w+)=([a-zA-Z0-9]+)",{r"\1": r"\2"})
      • 加工结果
        {
        	"q": "asd",
        	"a": 1,
        	"b": 2,
        	"k1": "q=asd&a=1&b=2&__1__=3",
        	"__1__": 3
        }
  2. 示例2

    以content:k1=v1&k2=v2?k3:v3为例,需要特定正则提取关键字,方案如下:

    • e_kv_delimit函数
      • 原始日志
        {
            "content":"k1=v1&k2=v2?k3:v3"
        }
      • 加工规则
        e_kv_delimit("content",pair_sep=r"&?",kv_sep="(?:=|:)")
      • 加工结果
        {
        	"k1": "v1",
        	"k2": "v2",
        	"k3": "v3",
        	"content": "k1=v1&k2=v2?k3:v3"
        }
    • e_regex函数
      • 原始日志
        {
            "content":"k1=v1&k2=v2?k3:v3"
        }
      • 加工规则
        e_regex("content",r"([a-zA-Z0-9]+)[=|:]([a-zA-Z0-9]+)",{r"\1": r"\2"})
      • 加工结果
        {
        	"k1": "v1",
        	"k2": "v2",
        	"k3": "v3",
        	"content": "k1=v1&k2=v2?k3:v3"
        }
support.huaweicloud.com/bestpractice-lts/lts_07_0053.html