Link Search Menu Expand Document Documentation Menu

add_entries

add_entries 处理器将条目添加到事件中。

配置

您可以使用以下选项配置 add_entries 处理器。

选项 必需 描述
entries 要添加到事件中的条目列表。
key 要添加的新条目的键。键的示例包括 my_keymyKeyobject/sub_Key。键也可以是格式表达式,例如 ${/key1} 用于将字段 key1 的值用作键。
metadata_key 新元数据属性的键。该参数必须是字面字符串键,而不是 JSON 指针。需要一个字符串键或 metadata_key
value 要添加的新条目的值,可与以下任何数据类型一起使用:字符串、布尔值、数字、null、嵌套对象和数组。
format 用作新条目值的格式字符串,例如 ${key1}-${key2},其中 key1key2 是事件中的现有键。如果未指定 valuevalue_expression,则为必填项。
value_expression 用作新条目值的表达式字符串。例如,/key 是事件中现有的键,其类型为数字、字符串或布尔值。表达式还可以包含返回数字/字符串/整数的函数。例如,当键是字符串时,length(/key) 将返回事件中键的长度。有关键的更多信息,请参阅表达式语法
add_when 一个条件表达式,例如 /some-key == "test"',将对其进行评估以确定是否在事件上运行处理器。
overwrite_if_key_exists 当设置为 true 时,如果事件中已存在 key,则覆盖现有值。默认值为 false
append_if_key_exists 当设置为 true 时,如果事件中已存在 key,则现有值将被追加。如果现有值不是数组,则将创建一个数组。默认值为 false

用法

以下示例展示了 add_entries 处理器在不同情况下的用法。

示例:添加具有简单值的条目

以下示例展示了如何配置处理器以添加具有简单值的条目

... 
  processor:
    - add_entries:
        entries:
          - key: "name"
            value: "John"
          - key: "age"
            value: 20
...

当输入事件包含以下数据时

{"message": "hello"}

处理后的事件将包含以下数据

{"message": "hello", "name": "John", "age": 20}

示例:使用格式字符串添加条目

以下示例展示了如何配置处理器以添加来自其他字段值的条目

... 
  processor:
    - add_entries:
        entries:
          - key: "date"
            format: "${month}-${day}"
...

当输入事件包含以下数据时

{"month": "Dec", "day": 1}

处理后的事件将包含以下数据

{"month": "Dec", "day": 1, "date": "Dec-1"}

示例:使用值表达式添加条目

以下示例展示了如何配置处理器以使用 value_expression 选项

... 
  processor:
    - add_entries:
        entries:
          - key: "length"
            value_expression: "length(/message)"
...

当输入事件包含以下数据时

{"message": "hello"}

处理后的事件将包含以下数据

{"message": "hello", "length": 5}

示例:添加元数据

以下示例展示了如何配置处理器以向事件添加元数据

... 
  processor:
    - add_entries:
        entries:
          - metadata_key: "length"
            value_expression: "length(/message)"
...

当输入事件包含以下数据时

{"message": "hello"}

处理后的事件将具有相同的数据,并附加元数据 {"length": 5}。您随后可以在管道中使用诸如 getMetadata("length") 的表达式。有关更多信息,请参阅 getMetadata 函数

示例:添加动态键

以下示例展示了如何配置处理器以使用动态键向事件添加元数据

... 
  processor:
    - add_entries:
        entries:
          - key: "${/param_name}"
            value_expression: "/param_value"
...

当输入事件包含以下数据时

{"param_name": "cpu", "param_value": 50}

处理后的事件将包含以下数据

{"param_name": "cpu", "param_value": 50, "cpu": 50}

示例:覆盖现有条目

以下示例展示了如何配置处理器以覆盖现有条目

... 
  processor:
    - add_entries:
        entries:
          - key: "message"
            value: "bye"
            overwrite_if_key_exists: true
...

当输入事件包含以下数据时

{"message": "hello"}

处理后的事件将包含以下数据

{"message": "bye"}

如果未将 overwrite_if_key_exists 设置为 true,则处理后输入事件将不会更改。

示例:将值追加到现有条目

以下示例展示了如何配置处理器以将值追加到现有条目

... 
  processor:
    - add_entries:
        entries:
          - key: "message"
            value: "world"
            append_if_key_exists: true
...

当输入事件包含以下数据时

{"message": "hello"}

处理后的事件将包含以下数据

{"message": ["hello", "world"]}