赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 数据加工
  6. 数据加工(新版)
  7. 最佳实践
  8. 文本解析
  9. 提取字符串动态键值对

提取字符串动态键值对

  • 文本解析
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文档介绍如何使用SPL语句提取字符串键值对。

关键字提取

字符串动态键值对提取分为关键字提取、值提取、关键字加工和值加工。常用方案为采用parse-kv指令。以k1: q=asd&a=1&b=2&1=3日志为例,对该格式的日志进行关键字和值提取。

  • 原始日志

    k1: q=asd&a=1&b=2&__1__=3
  • SPL语句

    * | parse-kv -delims='&' k1
  • 结果

    k1: q=asd&a=1&b=2
    q: asd
    a: 1
    b: 2
    __1__: 3

值提取

动态键值对之间以及关键字与值之间有明确标识,例如a=b或a="cxxx"的日志格式,推荐用parse-kv指令,示例如下。

  • 原始日志

    content1:  k="helloworld",the change world, k2="good"
  • 提取内容不包括the change world,SPL语句如下:

    * | parse-kv -delims=',\s' content1
  • 结果

    content1:  k="helloworld",the change world, k2="good"
    k1: helloworld
    k2: good

关键字加工

parse-kv指令可以通过prefix=""对关键字和值进行加工。

  • 原始日志

    k1: q=asd&a=1&b=2
  • SPL语句

    * | parse-kv -delims='&' -prefix='start_' k1
  • 结果

    k1: q=asd&a=1&b=2
    start_a: 1
    start_b: 2
    start_q: asd

值加工

日志格式为k1:"v1"abc"形式,值加工的内容存在双引号符号时,使用parse-kv指令可正常进行提取。

  • 原始日志

    """
    这里的\只是普通的符号,不是转义符
    """
    content2:  k1:"v1\"abc", k2:"v2", k3:"v3"
  • SPL语句

    * | parse-kv -delims=',\s' -kv-sep=':' content2
  • 结果

    content2:  k1:"v1\"abc", k2:"v2", k3: "v3"
    k1: "v1\\"abc"
    k2: "v2"
    k3: "v3"

客户案例

例如某网站日志中有一个URL数据,针对这条数据有提取需求,按照需求设计加工规则处理日志内容。

  • 需求

    • 需求1:对日志解析出proto、domain、param等内容。

    • 需求2:对param中的键值对做展开操作。

  • 原始日志

    __source__:  10.43.xx.xx
    __tag__:__client_ip__:  12.120.xx.xx
    __tag__:__receive_time__:  1563517113
    __topic__:
    request:  https://yz.m.sm.cn/video/getlist/s?ver=3.2.3&app_type=supplier&os=Android8.1.0
  • SPL方案

    * | parse-regexp request, '([^:]+)://([^/]+)(.+)' as uri_proto, uri_domain, uri_param | parse-regexp uri_param, '([^?]*)\?(.*)' as uri_path,uri_query | parse-kv -delims='&?' uri_query
  • 细分规则及对应的加工结果

    1. 使用parse-regexp指令对字段request进行解析。

      • 使用非命名正则捕获

        * | parse-regexp request, '([^:]+)://([^/]+)(.+)' as uri_proto, uri_domain, uri_param
      • 对应加工结果

        uri_proto:  https
        uri_domain:  yz.m.sm.cn
        uri_param:  /video/getlist/s?ver=3.2.3&app_type=supplier&os=Android8.1.0
    2. 使用parse-regexp指令对字段uri_param进行解析。

      • 使用非命名正则捕获

        * | parse-regexp uri_param, '([^?]*)\?(.*)' as uri_path,uri_query
      • 对应加工结果

        uri_path:  /video/getlist/s
        uri_query:  ver=3.2.3&app_type=supplier&os=Android8.1.0
    3. 对uri_param进行字段提取,具体操作如下。

      • 使用非命名正则捕获

        * | parse-kv -delims='&?' uri_query
      • 对应加工结果

        uri_proto:  https
        uri_domain:  yz.m.sm.cn
        uri_param:  /video/getlist/s?ver=3.2.3&app_type=supplier&os=Android8.1.0
  • SPL结果预览处理后日志

    __source__:  10.43.xx.xx
    __tag__:__client_ip__:  12.120.xx.xx
    __tag__:__receive_time__:  1563517113
    __topic__:
    request:  https://yz.m.sm.cn/video/getlist/s?ver=3.2.3&app_type=supplier&os=Android8.1.0
    uri_domain:  yz.m.sm.cn
    uri_path:  /video/getlist/s
    uri_proto:  https
    uri_query:  ver=3.2.3&app_type=supplier&os=Android8.1.0
    app_type:  supplier
    os:  Android8.1.0
    ver:  3.2.3

    假如只有解析request需求,可以直接对字段request使用parse-kv指令。例如:

    * | parse-kv -delims='&?' request

    预览处理后日志:

    __source__:  10.43.xx.xx
    __tag__:__client_ip__:  12.120.xx.xx
    __tag__:__receive_time__:  1563517113
    __topic__:
    request:  https://yz.m.sm.cn/video/getlist/s?ver=3.2.3&app_type=supplier&os=Android8.1.0
    app_type:  supplier
    os:  Android8.1.0
    ver:  3.2.3
相关文章

解析CSV格式日志 2025-04-22 10:55

本文档介绍正常形式的CVS格式日志和非正常形式的CVS格式日志如何解析。 正常形式的CSV格式日志

使用SPL的正则表达式解析Nginx日志 2025-04-22 10:55

Nginx访问日志记录了用户访问的详细信息,解析Nginx访问日志对业务运维具有重要意义。本文介绍如何使用正则表达式函数解析Nginx访问日志。 日志服务支持通过SPL的正则表达式解析Nginx日志。现以一条Nginx成功访问日志为例,介绍如何使用正则表达式解析Nginx成功访问日志。

解析Java报错日志 2025-04-22 10:55

在大数据、高并发场景下的Java应用中,分析Java报错日志并提供运维指导,可降低运营维护成本。日志服务支持采集各云产品的Java报错日志,本文介绍使用新版数据加工解析Java报错日志。 前提条件 已采集各SLS、OSS、SLB、RDS的Java错误日志到cloud_product_error_lo

提取字符串动态键值对 2025-04-22 10:55

本文档介绍如何使用SPL语句提取字符串键值对。 关键字提取 字符串动态键值对提取分为关键字提取、值提取、关键字加工和值加工。常用方案为采用parse-kv指令。以k1:

解析复杂日志中的字段 2025-04-22 10:55

本文档主要为您介绍如何使用日志服务的数据加工功能,从复杂字符串中解析出JSON对象。 从复杂字符串中解析出JSON对象,并展开特定字段

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号