map_to_list
map_to_list
处理器将键值对映射转换为对象列表。每个对象在单独的字段中包含键和值。
配置
下表描述了 map_to_list
处理器的配置选项。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
source | 是 | 字符串 | 用于执行映射操作的源映射。当设置为空字符串 ("" ) 时,它将使用事件的根作为 source 。 |
目标 | 是 | 字符串 | 生成列表的目标。 |
key_name | 否 | 字符串 | 用于存储原始键的字段名称。默认值为 key 。 |
value_name | 否 | 字符串 | 用于存储原始值的字段名称。默认值为 value 。 |
exclude_keys(排除的键) | 否 | 列表 | 源映射中将从处理中排除的键。默认值为空列表 ([] )。 |
remove_processed_fields | 否 | 布尔型 | 当为 true 时,处理器将从源映射中移除已处理的字段。默认值为 false 。 |
convert_field_to_list | 否 | 布尔型 | 如果为 true ,处理器会将源映射中的字段转换为列表,并将它们放置在目标列表的字段中。默认值为 false 。 |
map_to_list_when | 否 | 字符串 | 一个条件表达式,例如 /some-key == "test"' ,将被评估以确定是否在事件上运行处理器。默认值为 null 。除非另有说明,否则所有事件都将被处理。 |
tags_on_failure | 否 | 列表 | 当事件处理失败时,添加到事件元数据中的标签列表。 |
用法
以下示例展示了如何在管道中使用 map_to_list
处理器。
示例:最小配置
以下示例展示了仅配置了必需参数 source
和 target
的 map_to_list
处理器
...
processor:
- map_to_list:
source: "my-map"
target: "my-list"
...
当输入事件包含以下数据时
{
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
处理后的事件将包含以下输出
{
"my-list": [
{
"key": "key1",
"value": "value1"
},
{
"key": "key2",
"value": "value2"
},
{
"key": "key3",
"value": "value3"
}
],
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
示例:自定义键名和值名
以下示例展示了如何配置自定义键名和值名
...
processor:
- map_to_list:
source: "my-map"
target: "my-list"
key_name: "name"
value_name: "data"
...
当输入事件包含以下数据时
{
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
处理后的事件将包含以下输出
{
"my-list": [
{
"name": "key1",
"data": "value1"
},
{
"name": "key2",
"data": "value2"
},
{
"name": "key3",
"data": "value3"
}
],
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
示例:从处理中排除特定键并移除所有已处理的字段
以下示例展示了如何排除特定键并从输出中移除所有已处理的字段
...
processor:
- map_to_list:
source: "my-map"
target: "my-list"
exclude_keys: ["key1"]
remove_processed_fields: true
...
当输入事件包含以下数据时
{
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
处理后的事件将移除“key2”和“key3”字段,但“my-map”对象“key1”将保留,如以下输出所示
{
"my-list": [
{
"key": "key2",
"value": "value2"
},
{
"key": "key3",
"value": "value3"
}
],
"my-map": {
"key1": "value1"
}
}
示例:使用 convert_field_to_list
以下示例展示了如何在处理器中使用 convert_field_to_list
选项
...
processor:
- map_to_list:
source: "my-map"
target: "my-list"
convert_field_to_list: true
...
当输入事件包含以下数据时
{
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
处理后的事件将把所有字段转换为列表,如以下输出所示
{
"my-list": [
["key1", "value1"],
["key2", "value2"],
["key3", "value3"]
],
"my-map": {
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
}
示例:使用事件根作为源
以下示例展示了如何通过将 source
设置为空字符串 (""
) 来使用事件的根作为源
...
processor:
- map_to_list:
source: ""
target: "my-list"
...
当输入事件包含以下数据时
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
处理后的事件将包含以下输出
{
"my-list": [
{
"key": "key1",
"value": "value1"
},
{
"key": "key2",
"value": "value2"
},
{
"key": "key3",
"value": "value3"
}
],
"key1": "value1",
"key2": "value2",
"key3": "value3"
}