add_entries
add_entries
处理器将条目添加到事件中。
配置
您可以使用以下选项配置 add_entries
处理器。
选项 | 必需 | 描述 |
---|---|---|
entries | 是 | 要添加到事件中的条目列表。 |
key | 否 | 要添加的新条目的键。键的示例包括 my_key 、myKey 和 object/sub_Key 。键也可以是格式表达式,例如 ${/key1} 用于将字段 key1 的值用作键。 |
metadata_key | 否 | 新元数据属性的键。该参数必须是字面字符串键,而不是 JSON 指针。需要一个字符串键或 metadata_key 。 |
value | 否 | 要添加的新条目的值,可与以下任何数据类型一起使用:字符串、布尔值、数字、null、嵌套对象和数组。 |
format | 否 | 用作新条目值的格式字符串,例如 ${key1}-${key2} ,其中 key1 和 key2 是事件中的现有键。如果未指定 value 和 value_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"]}