Link Search Menu Expand Document Documentation Menu

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 处理器。

示例:最小配置

以下示例展示了仅配置了必需参数 sourcetargetmap_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"
}