Todos los productos
Search
Centro de documentos

Simple Log Service:Funciones de extracción de valores

Última actualización: Sep 02, 2026

Este tema explica la sintaxis de las funciones de extracción de valores de campo, incluidos sus parámetros y ejemplos.

Lista de funciones

Tipo

Función

Descripción

Extracción con expresión regular

e_regex

Extrae un valor de un campo mediante una expresión regular y lo asigna a otro campo.

Esta función se puede combinar con otras. Para ver un ejemplo relacionado, consulte Parse Java error logs.

Extracción JSON

e_json

Procesa un objeto JSON en un campo especificado. Las operaciones incluyen expandir el objeto, extraer datos con JMESPath, o extraer y expandir simultáneamente.

Esta función se puede combinar con otras. Para ver un ejemplo relacionado, consulte Transform complex JSON data.

Extracción basada en delimitadores

e_csv, e_psv, e_tsv

Extrae valores para varios campos desde un campo de origen mediante un delimitador y nombres de campo predefinidos.

  • e_csv: El delimitador predeterminado es una coma (,).

  • e_psv: El delimitador predeterminado es una barra vertical (|).

  • e_tsv: El delimitador predeterminado es un carácter de tabulación (\t).

Estas funciones se pueden combinar con otras. Para ver un ejemplo relacionado, consulte Parse CSV-formatted logs.

Extracción clave-valor

e_kv

Extrae pares clave-valor de uno o más campos de origen mediante un carácter de comillas especificado.

Esta función se puede combinar con otras. Para ver un ejemplo relacionado, consulte Extract dynamic key-value pairs from a string.

e_kv_delimit

Extrae pares clave-valor de un campo de origen mediante un delimitador.

Extracción estándar Syslog

e_syslogrfc

Calcula facility y severity a partir de un valor de prioridad basado en el protocolo Syslog y los asigna al nivel correspondiente.

Esta función se puede combinar con otras. Para ver un ejemplo relacionado, consulte Parse standard Syslog format data.

Extracción basada en reglas

e_anchor

Extrae cadenas mediante las reglas definidas en anchor_rules.

e_regex

Extrae valores de un campo basándose en una expresión regular y los asigna a otros campos.

  • Sintaxis

    e_regex(key, regex, fields_info, mode="fill-auto", pack_json=None)
  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    key

    Cualquiera

    Sí

    El campo de origen. Si el campo no existe, la función no realiza ninguna acción. Para obtener información sobre cómo configurar nombres de campo especiales, consulte event types.

    regex

    String

    Sí

    La expresión regular que se utiliza para extraer valores de campo. Admite tanto grupos de captura como grupos sin captura.

    Nota

    Un grupo sin captura, que requiere el prefijo ?:, se usa a veces para agrupar. Por ejemplo, \w+@\w+\.\w(?:\.\cn)?. Para obtener más información, consulte non-capturing groups.

    fields_info

    String/List/Dict

    No

    Los campos de destino para los valores coincidentes. Este parámetro es obligatorio si no utiliza grupos de captura con nombre en la expresión regular.

    mode

    String

    No

    El modo de sobrescritura para los campos. El valor predeterminado es fill-auto. Para obtener más información sobre los valores y sus significados, consulte field extraction check and overwrite mode.

    pack_json

    String

    No

    Empaqueta todos los resultados coincidentes de la expresión regular en el campo especificado por pack_json. El valor predeterminado es None, lo que indica que el empaquetado está deshabilitado.

  • Respuesta

    Devuelve el registro actualizado con los campos extraídos y sus valores.

  • Ejemplos

    • Ejemplo 1: Extraer un solo valor

      • Registro sin procesar

        msg: 192.168.0.1 http://... 127.0.0.0
      • Regla de transformación

        # Extract the first IP address from the msg field. 
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
      • Resultado de la transformación

        msg: 192.168.0.1 http://... 127.0.0.0
        ip: 192.168.0.1
    • Ejemplo 2: Extraer varios valores

      • Registro sin procesar

        msg: 192.168.0.1 http://... 127.0.0.0
      • Regla de transformación

        # Extract two IP addresses from the msg field and assign them to server_ip and client_ip.
        e_regex("msg",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",["server_ip","client_ip"])
      • Resultado de la transformación

        msg: 192.168.0.1 http://... 127.0.0.0
        server_ip: 192.168.0.1
        client_ip: 127.0.0.0
    • Ejemplo 3: Extraer valores mediante un grupo de captura.

      • Registro sin procesar

        content: start sys version: deficience, err: 2
      • Regla de transformación

        # Use a regular expression to capture the version and error values from the content field.
        e_regex("content",r"start sys version: (\w+),\s*err: (\d+)",["version","error"])
      • Resultado de la transformación

        content: start sys version: deficience, err: 2
        error: 2
        version: deficience
    • Ejemplo 4: Extraer valores mediante un grupo de captura con nombre

      • Registro sin procesar

        content:  start sys version: deficience, err: 2
      • Regla de transformación

        e_regex("content",r"start sys version: (?P<version>\w+),\s*err: (?P<error>\d+)")
      • Resultado de la transformación

        content:  start sys version: deficience, err: 2
        error:  2
        version:  deficience
    • Ejemplo 5: Crear dinámicamente un nombre de campo y un valor a partir del campo dict.

      • Registro sin procesar

        dict: verify:123
      • Regla de transformación

        e_regex("dict",r"(\w+):(\d+)",{r"k_\1": r"v_\2"})
      • Resultado de la transformación

        dict: verify:123
        k_verify: v_123
    • Ejemplo 6: Extraer y empaquetar un valor en el campo name.

      • Registro sin procesar

        msg: 192.168.0.1 http://... 127.0.0.0
      • Regla de transformación

        e_regex("msg", r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", "ip", pack_json="name")
      • Resultado de la transformación

        msg:192.168.0.1 http://... 127.0.0.0
        name:{"ip": "192.168.0.1"}
    • Ejemplo 7: Crear dinámicamente campos a partir del campo dict y empaquetarlos en el campo name.

      • Registro sin procesar

        dict: x:123, y:456, z:789
      • Regla de transformación

        e_regex("dict", r"(\w+):(\d+)", {r"k_\1": r"v_\2"}, pack_json="name")
      • Resultado de la transformación

        dict:x:123, y:456, z:789
        name:{"k_x": "v_123", "k_y": "v_456", "k_z": "v_789"}
    • Ejemplo 8: Extraer y empaquetar valores de un grupo de captura en el campo name.

      • Registro sin procesar

        content: start sys version: deficience, err: 2
      • Regla de transformación

        e_regex( "content", r"start sys version: (\w+),\s*err: (\d+)", ["version", "error"],pack_json="name")
      • Resultado de la transformación

        content:start sys version: deficience, err: 2
        name:{"version": "deficience", "error": "2"}
  • Referencias

    Puede combinar esta función con otras. Para ver un ejemplo relacionado, consulte Parse Java error logs.

e_json

Realiza operaciones JSON en un objeto JSON dentro de un campo especificado. Estas operaciones incluyen expandir los datos JSON, extraer datos con una expresión JMESPath, o extraer y luego expandir un subconjunto JSON.

  • Sintaxis

    e_json(key, expand=None, depth=100, prefix="__", suffix="__", fmt="simple", sep=".", 
         expand_array=True, fmt_array="{parent}_{index}", 
         include_node=r"[\u4e00-\u9fa5\u0800-\u4e00a-zA-Z][\w\-\.]*",  
         exclude_node="", include_path="", exclude_path="",
         jmes="", output="", jmes_ignore_none=False, mode='fill-auto'
    )
    Nota

    Si la cadena de destino no es un objeto JSON válido, la función e_json devuelve la cadena original sin analizarla.

  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    key

    String

    Sí

    El nombre del campo de entrada. Si el campo no existe, la función no realiza ninguna acción. Para obtener información sobre cómo configurar nombres de campo especiales, consulte Event types.

    expand

    Boolean

    No

    Especifica si se debe expandir el campo.

    • Si el parámetro jmes no está configurado, el valor predeterminado es True, lo que expande el campo.

    • Si el parámetro jmes está configurado, el valor predeterminado es False, lo que no expande el campo.

    depth

    Number

    No

    La profundidad hasta la cual la función expande el campo. Valores válidos: 1 a 2000. El valor predeterminado es 100. Un valor de 1 expande solo el primer nivel.

    prefix

    String

    No

    El prefijo que se agrega a cada nombre de campo expandido.

    suffix

    String

    No

    El sufijo que se agrega a cada nombre de campo expandido.

    fmt

    String

    No

    El método de formato para los nombres de campo expandidos. Valores válidos:

    • simple (predeterminado): Usa el nombre del nodo actual como nombre de campo. El formato es {prefix}{current}{suffix}.

    • full: Combina la ruta completa desde el campo de origen hasta el nodo actual como nombre de campo. El formato es {parent_list_str}{sep}{prefix}{current}{suffix}. El delimitador se especifica mediante el parámetro sep. El delimitador predeterminado es ..

    • parent: Combina el nombre del nodo actual con el nombre de su nodo padre inmediato. El formato es {parent}{sep}{prefix}{current}{suffix}. El delimitador se especifica mediante el parámetro sep. El delimitador predeterminado es ..

    • root: Combina el nombre del nodo actual con el nombre del nodo raíz. El formato es {parent_list[0]}{sep}{prefix}{current}{suffix}. El delimitador se especifica mediante el parámetro sep. El delimitador predeterminado es ..

    sep

    String

    No

    El delimitador entre los nombres de nodo padre e hijo. Este parámetro aplica cuando fmt se establece en full, parent o root. El valor predeterminado es ..

    expand_array

    Boolean

    No

    Especifica si se deben expandir las matrices. El valor predeterminado es True.

    fmt_array

    String

    No

    El método de formato para la expansión de matrices. El formato es {parent_rlist[0]}_{index}. También puede crear una cadena de formato personalizada mediante hasta cinco marcadores de posición: parent_list, current, sep, prefix y suffix.

    include_node

    String/Number

    No

    La lista de permitidos de nodos especifica los nombres de nodo que se incluyen para el filtrado. De forma predeterminada, solo se expanden automáticamente los nodos cuyos nombres consisten en caracteres chinos, dígitos, letras y _.-.

    exclude_node

    String

    No

    Una expresión regular que define una lista de bloqueo de nombres de nodo que se excluyen.

    include_path

    String

    No

    Una expresión regular que define una lista de permitidos de rutas de nodo que se incluyen.

    exclude_path

    String

    No

    Una expresión regular que define una lista de bloqueo de rutas de nodo que se excluyen.

    jmes

    String

    No

    Una expresión JMESPath para extraer datos del objeto JSON.

    output

    String

    No

    El nombre del campo de salida para el valor extraído mediante la expresión JMESPath.

    jmes_ignore_none

    Boolean

    No

    Especifica el comportamiento cuando la expresión JMESPath no encuentra ningún valor. Si es True (el valor predeterminado), se ignora la extracción. Si es False, se devuelve una cadena vacía.

    mode

    String

    No

    El modo de sobrescritura de campos. El valor predeterminado es fill-auto. Para obtener más información, consulte Field extraction check and overwrite modes.

    • Filtrado de expansión JSON

      • Si se establece una lista de permitidos de nodos, solo los nodos en dicha lista se incluyen en el resultado. Ejemplo de expresión regular para una lista de permitidos de nodos: e_json("json_data_filed", ...., include_node=r'key\d+').

      • Si se establece una lista de bloqueo de nodos, los nodos en dicha lista se excluyen del resultado. Ejemplo de expresión regular para una lista de bloqueo de nodos: e_json("json_data_filed", ...., exclude_node=r'key\d+').

      • Para la expansión de rutas de nodo, las expresiones regulares include_path y exclude_path se comparan con el inicio de la ruta. Las rutas de nodo usan . como delimitador.

    • Filtrado JMESPath

      Use JMESPath para seleccionar y calcular datos.

      • Seleccione una lista de atributos de elementos desde una ruta JSON específica: e_json(..., jmes="cve.vendors[*].product",output="product")

      • Concatene atributos de elementos desde una ruta JSON específica con una coma (,): e_json(..., jmes="join(',', cve.vendors[*].name)",output="vendors")

      • Calcule el valor máximo de atributo para los elementos en una ruta JSON específica: e_json(..., jmes="max(words[*].score)",output="hot_word")

      • Devuelva una cadena vacía si una ruta específica no existe o está vacía: e_json(..., jmes="max(words[*].score)",output="hot_word", jmes_ignore_none=False)

    • parent_list y parent_rlist

      Los siguientes ejemplos demuestran su uso.

      Registro sin procesar:

      data: { "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
      • parent_list organiza los nodos padres de izquierda a derecha.

        e_json("data", fmt='{parent_list[0]}-{parent_list[1]}#{current}')

        Resultado de la transformación:

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        data-k2#k3:200
        data-k2#k5:300
      • parent_rlist organiza los nodos padres de derecha a izquierda.

        e_json("data", fmt='{parent_rlist[0]}-{parent_rlist[1]}#{current}')

        Resultado de la transformación:

        data:{ "k1": 100,"k2": {"k3": 200,"k4": {"k5": 300}}}
        k2-data#k3:200
        k4-k2#k5:300
  • Respuesta

    Devuelve el registro con los campos recién agregados.

  • Ejemplos

    • Ejemplo 1: Expandir un campo.

      • Registro sin procesar

        data: {"k1": 100, "k2": 200}
      • Regla de transformación

        e_json("data",depth=1)
      • Resultado de la transformación

        data: {"k1": 100, "k2": 200}
        k1: 100
        k2: 200
    • Ejemplo 2: Agregar un prefijo y un sufijo a los nombres de campo.

      • Registro sin procesar

        data: {"k1": 100, "k2": 200}
      • Regla de transformación

        e_json("data", prefix="data_", suffix="_end")
      • Resultado de la transformación

        data: {"k1": 100, "k2": 200}
        data_k1_end: 100
        data_k2_end: 200
    • Ejemplo 3: Expandir un campo usando diferentes formatos.

      • Registro sin procesar

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • fmt=full

        e_json("data", fmt='full')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        data.k2.k3: 200
        data.k2.k4.k5: 300
      • fmt=parent

        e_json("data", fmt='parent')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        k2.k3: 200
        k4.k5: 300
      • fmt=root

        e_json("data", fmt='root')
        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data.k1: 100
        data.k3: 200
        data.k5: 300
    • Ejemplo 4: Extraer datos JSON con un delimitador, prefijo y sufijo especificados.

      • Registro sin procesar

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
      • Regla de transformación

        e_json("data", fmt='parent', sep="@", prefix="__", suffix="__")
      • Resultado de la transformación

        data: {"k1": 100, "k2": {"k3": 200, "k4": {"k5": 300} } }
        data@__k1__:100
        k2@__k3__:200
        k4@__k5__:300
    • Ejemplo 5: Usar el parámetro fmt_array para extraer datos JSON como una matriz.

      • Registro sin procesar

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
      • Regla de transformación

        e_json("people", fmt='parent', fmt_array="{parent_rlist[0]}-{index}")
      • Resultado de la transformación

        people: [{"name": "xm", "sex": "boy"}, {"name": "xz", "sex": "boy"}, {"name": "xt", "sex": "girl"}]
        people-0.name: xm
        people-0.sex: boy
        people-1.name: xz
        people-1.sex: boy
        people-2.name: xt
        people-2.sex: girl
    • Ejemplo 6: Usar una expresión JMESPath para extraer un objeto JSON.

      • Registro sin procesar

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
      • Regla de transformación

        e_json("data", jmes='foo', output='jmes_output0')
        e_json("data", jmes='foo.bar', output='jmes_output1')
        e_json("data", jmes='people[0].last', output='jmes_output2')
        e_json("data", jmes='people[*].first', output='jmes_output3')
      • Resultado de la transformación

        data: { "people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"}],"foo": {"bar": "baz"}}
        jmes_output0: {"bar": "baz"}
        jmes_output1: baz
        jmes_output2: d
        jmes_output3: ["James", "Jacob"]
  • Lecturas adicionales

    Para ver un ejemplo de cómo combinar esta función con otras, consulte Complex JSON data transformation.

e_csv, e_psv y e_tsv

Estas funciones extraen varios campos de un campo específico mediante un delimitador personalizado y nombres de campo predefinidos.

  • e_csv: el delimitador predeterminado es la coma (,).

  • e_psv: el delimitador predeterminado es la barra vertical (|).

  • e_tsv: el delimitador predeterminado es el carácter de tabulación (\t).

  • Sintaxis

    e_csv(input field name, output field list, sep=",", quote='"', restrict=True, mode="fill-auto")
    e_psv(input field name, output field list, sep="|", quote='"', restrict=True, mode="fill-auto")
    e_tsv(input field name, output field list, sep="\t", quote='"', restrict=True, mode="fill-auto")
  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    input field name

    Cualquiera

    Sí

    Nombre del campo de entrada. Si el campo especificado no existe, la función no realiza ninguna acción. Para obtener información sobre cómo especificar nombres de campo especiales, consulte Event types.

    output field list

    Cualquiera

    Sí

    Nombres de los campos de salida que almacenan los valores analizados.

    Puede proporcionar los nombres como una lista de cadenas, por ejemplo, ["error", "message", "result"].

    Si los nombres de campo no contienen comas, también puede proporcionar una sola cadena con los nombres separados por comas, por ejemplo, "error, message, result".

    Para obtener información sobre cómo especificar nombres de campo especiales, consulte Event types.

    sep

    String

    No

    Delimitador. Debe ser un solo carácter.

    quote

    String

    No

    Carácter utilizado para encerrar valores. Utilícelo cuando un valor contiene el delimitador.

    restrict

    Boolean

    No

    Especifica si se utiliza el modo restringido. El valor predeterminado es True, que habilita el modo restringido. Este parámetro determina el comportamiento cuando el número de valores analizados no coincide con el número de campos de salida:

    • En modo restringido (True), la función no realiza ninguna acción.

    • En modo no restringido (False), la función asigna valores a los campos coincidentes.

    mode

    String

    No

    Modo de sobrescritura de campos. El valor predeterminado es fill-auto. Para obtener más información sobre los valores y sus significados, consulte Field extraction check and overwrite modes.

  • Respuesta

    Devuelve el registro con los nuevos campos agregados.

  • Ejemplos

    El siguiente ejemplo utiliza e_csv. Las funciones e_psv y e_tsv funcionan de manera similar.

    • Registro sin procesar

      content: 192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36,-,-
    • Regla de transformación

      e_csv("content", "remote_addr, time_local,host,request,status,request_time,body_bytes_sent,upstream_addr,upstream_status, upstream_response_time,http_referer,http_x_forwarded_for,http_user_agent,session_id,guid")
    • Resultado

      content:  192.168.0.100,10/Jun/2019:11:32:16 +0800,example.aliyundoc.com,GET /zf/11874.html HTTP/1.1,200,0.077,6404,192.168.0.100:8001,200,0.060,https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei,-,Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36,-,-
        body_bytes_sent:  6404
      guid:  -
      host:  example.aliyundoc.com
      http_referer:  https://image.developer.aliyundoc.com/s?q=how-to-make-noodles&from=wy878378&uc_param_str=dnntnwvepffrgibijbprsvdsei
      http_user_agent:  Mozilla/5.0 (Linux; Android 9; HWI-AL00 Build/HUAWEIHWI-AL00) AppleWebKit/537.36
      http_x_forwarded_for:  -
      remote_addr:  192.168.0.100
      request:  GET /zf/11874.html HTTP/1.1
      request_time:  0.077
      session_id:  -
      status:  200
      time_local:  10/Jun/2019:11:32:16 +0800
      topic:  syslog-forwarder
      upstream_addr:  192.168.0.100:8001
      upstream_response_time:  0.060
      upstream_status:  200
  • Más información

    Estas funciones pueden combinarse con otras. Para ver un ejemplo relacionado, consulte Parse CSV-formatted logs.

e_kv

Extrae pares clave-valor de uno o más campos de entrada.

  • Sintaxis

    e_kv(field_or_list, sep="=", quote='"', escape=False, prefix="", suffix="", mode="fill-auto")
  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    field_or_list

    String o lista de strings

    Sí

    Nombre de uno o más campos de entrada. Para obtener información sobre cómo especificar nombres de campo especiales, consulte Event types.

    sep

    String

    No

    Separador de clave-valor, que puede ser una expresión regular. El valor predeterminado es =.

    Nota

    Puede utilizar grupos de no captura, pero no grupos de captura. Para obtener más información, consulte Grouping.

    quote

    String

    No

    Carácter utilizado para encerrar valores. El valor predeterminado es ".

    Nota

    El valor de un par clave-valor dinámico extraído suele estar encerrado entre comillas; por ejemplo, a="abc" y b="xyz". Si un valor no está encerrado entre comillas, el sistema extrae únicamente un valor compuesto por los siguientes caracteres: Chinese characters, letters, numbers, and the symbols _-.%~. Por ejemplo, de a=ab12_-.%~|abc b=123, el sistema extrae a: ab12_-.%~ y b: 123.

    escape

    Boolean

    No

    Controla si se interpretan los caracteres de escape en los valores. El valor predeterminado es False. Por ejemplo, dada la entrada key="abc\"xyz", de forma predeterminada la función extrae el valor abc\ para el campo key. Si establece escape=True, el valor extraído será abc"xyz.

    prefix

    String

    No

    Prefijo que se agrega a los nombres de los campos extraídos.

    suffix

    String

    No

    Sufijo que se agrega a los nombres de los campos extraídos.

    mode

    String

    No

    Modo de sobrescritura de campos. El valor predeterminado es fill-auto. Para obtener más información sobre los modos disponibles, consulte Field extraction check and overwrite modes.

  • Respuesta

    Agrega los pares clave-valor extraídos al registro como nuevos campos.

  • Ejemplos

    • Ejemplo 1: extracción de pares clave-valor con el delimitador predeterminado =.

      • Registro sin procesar

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        Nota

        Si el registro sin procesar es request_uri: a1=1&a2=&a3=3 y el valor de a2 está vacío, la función e_kv() no puede extraer a2. Puede utilizar la función e_regex() para extraerlo; por ejemplo, e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"},mode="overwrite").

      • Regla de transformación

        e_kv("http_refer")
      • Resultado

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        q: asd
        a: 1
        b: 2
    • Ejemplo 2: adición de un prefijo y un sufijo a los nombres de campo.

      • Registro sin procesar

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
      • Regla de transformación

        e_kv(
            "http_refer",
            sep="=",
            quote='"',
            escape=False,
            prefix="data_",
            suffix="_end",
            mode="fill-auto",
        )
      • Resultado

        http_refer: https://video.developer.aliyundoc.com/s?q=asd&a=1&b=2
        data_q_end: asd
        data_a_end: 1
        data_b_end: 2
    • Ejemplo 3: extracción de pares clave-valor del campo content2 e interpretación de caracteres de escape mediante el parámetro escape.

      • Registro sin procesar

        content2: k1:"v1\"abc", k2:"v2", k3: "v3"
      • Regla de transformación

        e_kv("content2", sep=":", escape=True)
      • Resultado

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

    Para ver un ejemplo de cómo combinar esta función con otras, consulte Extract dynamic key-value pairs from a string.

e_kv_delimit

Extrae pares clave-valor de un campo de entrada mediante delimitadores.

  • Sintaxis

    e_kv_delimit(field_or_list, pair_sep=r"\s", kv_sep="=", prefix="", suffix="", mode="fill-auto")
  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    field_or_list

    string o lista de strings

    Sí

    Nombre de uno o más campos de entrada. Para obtener información sobre cómo especificar nombres de campo especiales, consulte event type.

    pair_sep

    string

    No

    Expresión regular que separa los pares clave-valor. El valor predeterminado es \s. Otros ejemplos incluyen \s\w y abc\s.

    Nota

    Para usar una cadena literal como separador, se recomienda reemplazarla primero por un delimitador de un solo carácter mediante la función str_replace o regex_replace. Después puede utilizar esta función para analizar el campo.

    kv_sep

    string

    No

    Expresión regular que separa una clave de su valor. El valor predeterminado es =. La expresión no se limita a un solo carácter.

    Nota

    Puede utilizar grupos de no captura, pero no grupos de captura. Para obtener más información, consulte Grouping.

    prefix

    string

    No

    Prefijo que se agrega a los nombres de los campos extraídos.

    suffix

    string

    No

    Sufijo que se agrega a los nombres de los campos extraídos.

    mode

    string

    No

    Modo de sobrescritura de campos. El valor predeterminado es fill-auto. Para obtener detalles sobre los valores, consulte Field extraction check and overwrite modes.

  • Respuesta

    Devuelve el registro con los pares clave-valor extraídos agregados como nuevos campos.

  • Ejemplos

    • Ejemplo 1: extracción de pares clave-valor con el delimitador predeterminado =.

      • Registro sin procesar

        data: i=c1 k1=v1 k2=v2 k3=v3
        Nota

        Si el registro sin procesar es request_uri: a1=1&a2=&a3=3, la función e_kv_delimit() no puede extraer a2 porque su valor está vacío. Para extraer pares con valores vacíos, utilice la función e_regex(). Por ejemplo: e_regex("request_uri",r'(\w+)=([^=&]*)',{r"\1":r"\2"}, mode="overwrite").

      • Regla de transformación

        e_kv_delimit("data")
      • Resultado

        data: i=c1 k1=v1 k2=v2 k3=v3
        i: c1
        k2: v2
        k1: v1
        k3: v3
    • Ejemplo 2: extracción de pares clave-valor mediante el delimitador &?.

      • Registro sin procesar

        data: k1=v1&k2=v2?k3=v3
      • Regla de transformación

        e_kv_delimit("data",pair_sep=r"&?")
      • Resultado

        data: k1=v1&k2=v2?k3=v3
        k2: v2
        k1: v1
        k3: v3
    • Ejemplo 3: extracción de pares clave-valor mediante una expresión regular como separador de clave-valor.

      • Registro sin procesar

        data: k1=v1 k2:v2 k3=v3
      • Regla de transformación

        e_kv_delimit("data", kv_sep=r"(?:=|:)")
      • Resultado

        data: k1=v1 k2:v2 k3=v3
        k2: v2
        k1: v1
        k3: v3

e_syslogrfc

Calcula la instalación y la severidad a partir de un valor de prioridad según el protocolo syslog y agrega las etiquetas correspondientes.

  • Sintaxis

    e_syslogrfc(key, rfc, fields_info=None, mode='overwrite')
  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    key

    Cualquiera

    Sí

    Nombre del campo que contiene el valor de priority.

    rfc

    String

    Sí

    Protocolo syslog que se utilizará. Valores válidos: SYSLOGRFC3164 y SYSLOGRFC5424.

    fields_info

    Dict

    No

    Diccionario que asigna nombres de campos de salida predeterminados (claves) a nombres personalizados (valores). Se pueden cambiar los nombres de los siguientes campos: {"_severity_":"sev","_facility_":"fac","_severitylabel_":"sevlabel","_facilitylabel_":"faclabel"}

    mode

    String

    No

    Modo de sobrescritura para los campos de salida. El valor predeterminado es overwrite. Para obtener más información, consulte Field extraction check and overwrite modes.

  • Respuesta

    Devuelve el registro con los nuevos campos de instalación, severidad y etiqueta.

  • Ejemplos

    • Ejemplo 1: extracción de información de instalación, severidad y etiqueta mediante el protocolo SYSLOGRFC5424.

      • registro sin procesar

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
      • regla de transformación

        e_syslogrfc("_priority_","SYSLOGRFC5424")
      • Resultado

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
        _facility_: 1
        _severity_: 5
        _severitylabel_: Notice: normal but significant condition
        _facilitylabel_: user-level messages
    • Ejemplo 2: extracción de información de instalación, severidad y etiqueta mediante el protocolo SYSLOGRFC5424 y cambio de nombre de los campos de salida.

      • registro sin procesar

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
      • regla de transformación

        e_syslogrfc(
            "_priority_",
            "SYSLOGRFC5424",
            {
                "_facility_": "fac",
                "_severity_": "sev",
                "_facilitylabel_": "_facility_label_",
                "_severitylabel_": "_severity_label_",
            },
        )
      • Resultado

        receive_time: 1558663265
        _priority_: 13
        _version_: 1
        _log_time_: 2019-05-06 11:50:16.015554+08:00
        _hostname_: iZbp1a65********i2qZ
        _program_: root
        _procid_: -
        _msgid_: -
        _extradata_: -
        _content_: twish
        fac: 1
        sev: 5
        _severity_label_: Notice: normal but significant condition
        _facility_label_: user-level messages
  • Referencias

    Esta función puede combinarse con otras. Para ver un ejemplo relacionado, consulte Parse standard Syslog format data.

e_anchor

Extrae cadenas de un campo de entrada mediante las reglas que usted define en el parámetro anchor_rules.

  • Sintaxis

    e_anchor(key,anchor_rules,fields,restrict=False,mode="overwrite")
  • Parámetros

    Parámetro

    Tipo

    Obligatorio

    Descripción

    key

    Any

    Sí

    Nombre del campo de entrada.

    anchor_rules

    String

    Sí

    Define el patrón para extraer cadenas, donde un asterisco () representa el contenido que se extraerá. Por ejemplo: User = ; Severity = *;.

    Los registros que se muestran en la consola tienen formato Key : Value con un espacio predeterminado entre los dos puntos y el valor. Cuando especifique anchor_rules, no incluya este espacio. En la entrada de registro de ejemplo, el campo content es el campo destino que se va a extraer.

    _source_:  bin-hangzhou-oss
        _tag_:_object_:  test001/test001-or20190906155735.perf
        _tag_:_receive_time_:  1582768681
        _topic_:
        content:  "Download": 4001792
    Nota

    No se puede usar un asterisco (*) como prefijo ni sufijo en el valor del campo de entrada.

    fields

    Any

    Sí

    Nombres de los campos de salida para los valores extraídos. Puede especificar los nombres como una lista de cadenas, por ejemplo, ["user", "job", "result"]. Si los nombres de los campos no contienen comas (,), también puede especificarlos como una sola cadena con los nombres separados por comas, por ejemplo, "user, job, result". Para obtener más información sobre cómo especificar nombres de campos especiales, que pueden contener caracteres especiales pero no asteriscos (*), consulte event type.

    Puede omitir un nombre de campo mediante un asterisco (). Por ejemplo, si especifica "user,,result", solo se crean los campos user y result. Para obtener más información, consulte el Ejemplo 10.

    restrict

    Boolean

    No

    Especifica si se usa el modo restringido. El valor predeterminado es False (modo no restringido). Este parámetro determina el comportamiento cuando el número de valores extraídos no coincide con el número de campos de salida:

    • En modo restringido (True), la función no realiza ninguna acción.

    • En modo no restringido (False), la función asigna valores a los campos correspondientes en secuencia.

    mode

    String

    No

    El valor predeterminado es overwrite. Consulte field extraction check and overwrite mode para obtener más información.

  • Respuesta

    Devuelve el registro original con los campos extraídos y sus valores anexados.

  • Ejemplos

    • Ejemplo 1: Extracción de varios valores

      • Registro sin procesar

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
      • Regla de transformación

        e_anchor("content","User=*: severity=*:",["user_field","severity_field"])
      • Resultado

        content : "Aug 2 04:06:08: host=192.168.0.10: local/ssl2 notice mcpd[3772]: User=jsmith@example.com: severity=warning: 01070638:5: Pool member 172.31.51.22:0 monitor status down."
        user_field : jsmith@example.com
        severity_field : warning
    • Ejemplo 2: Extracción de varios valores de matriz JSON

      • Registro sin procesar

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
      • Regla de transformación

        e_anchor("content",'name_list":*,"university":*},', ["name_list","universities"])
      • Resultado

        content : '"information":{"name_list":["Twiss","Evan","Wind","like"],"university":["UCL","Stanford University","CMU"]},"other":"graduate"'
        name_list : ["Twiss","Evan","Wind","like"]
        universities : ["UCL","Stanford University","CMU"]
    • Ejemplo 3: Extracción de un registro que contiene caracteres especiales

      • Registro sin procesar

        content : (+2019) June 24 "I am iron man"
      • Regla de transformación

        e_anchor("content", "(+*) * \"*\"",["Year","Date","Msg"])
      • Resultado

        content : (+2019) June 24 "I am iron man"
        Year : 2019
        Date : June 24
        Msg : I am iron man
    • Ejemplo 4: Extracción de un registro que contiene un carácter de control invisible (\x09)

      • Registro sin procesar

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
      • Regla de transformación

        e_anchor("content", "\x09\x09\x09*/55.0 */537.36",["Google", "Apple"])
      • Resultado

        content : \x09\x09\x09Chrome/55.0 Safari/537.36
        Google : Chrome
        Apple : Safari
    • Ejemplo 5: Extracción del campo content, que contiene un valor con caracteres especiales. El valor del campo es To...Subject, que aparece después de MESSAGE:.

      • Registro sin procesar

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
      • Regla de transformación

        e_anchor("content","* INFO *: \n    To: *\n    Subject: *",["time","message","email","subject"])
      • Resultado

        content : 12:08:10,651 INFO sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE: 
        To: example@aliyun.com
        Subject: New line Breaks in Message
        time : 12:08:10,651
        message : sample_server ReportEmailer:178 - DEBUG SENDING MESSAGE
        email : example@aliyun.com
        subject : New line Breaks in Message
    • Ejemplo 6: Extracción del campo content, que contiene un valor con el carácter especial invisible \t.

      • Registro sin procesar

        content :   I'm tabbed in
      • Regla de transformación

        e_anchor("content","\tI'm * in","word")
        # You can also copy the exact value from the content field to create the pattern.
        # Do not copy the default space after the colon in the field name.
        e_anchor("content","    I'm * in","word")
      • Resultado

        content :   I'm tabbed in
        word : tabbed
    • Ejemplo 7: Extracción del campo content que contiene un valor con carácter especial, el cual se muestra como \t.

      • Registro sin procesar

        content : \tI'm tabbed in
      • Regla de transformación

        e_anchor("content","\tI'm * in","word")
        # You can also use the following rule:
        e_anchor("content","    I'm * in","word")
      • Resultado

        content : \tI'm tabbed in
        word : tabbed
    • Ejemplo 8: Extracción de un registro en modo restringido

      • Registro sin procesar

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Regla de transformación

        e_anchor("content","I * to * having",["v_word", "n_word","asd"],restrict=True)
      • Resultado

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
    • Ejemplo 9: Extracción de un registro en modo no restringido

      • Registro sin procesar

        content :  I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
      • Regla de transformación

        e_anchor("content","love * fight with my * and",["test1","test2","test13"],restrict=False)
      • Resultado

        content : I used to love having snowball fight with my friends and building snowmen on the streets around our neighborhood
        test1 : having snowball
        test2 : friends
    • Ejemplo 10: Extracción de un valor y omisión de otro

      • Registro sin procesar

        content: Could you compare the severity of natural disasters to man-made disasters
      • Regla de transformación

        e_anchor('content', 'compare the * of natural disasters to man-made *', 'n-word,*')
      • Resultado

        content : Could you compare the severity of natural disasters to man-made disasters
        n-word : severity