Append 处理器

编辑

append 处理器会在目标字段已存在且为数组的情况下,将一个或多个值追加到现有数组中。如果字段存在且是标量,则将其转换为数组,然后将一个或多个值追加到其中。这些值可以是一个或多个静态值,也可以是fields键下列出的字段中的一个或多个值。

target_field
您想要追加数据的字段。
fields
(可选) 要从中复制数据的字段列表。如果值是具体类型,它将直接追加到目标。但是,如果值是数组,则数组的所有元素将分别推送到目标字段。
values
(可选) 要追加到目标字段的静态值列表。
ignore_empty_values
(可选) 如果设置为true,则所有""nil都将被忽略,不会追加到目标字段。
fail_on_error
(可选) 如果设置为true并且发生错误,则更改将被恢复,并返回原始值。如果设置为false,则发生错误时处理将继续进行。默认为true
allow_duplicate
(可选) 如果设置为false,则处理器不会追加字段中已存在的值。默认为true,这将追加数组中的重复值。
ignore_missing
(可选) 指示是否忽略缺少源字段的事件。默认为false,如果缺少字段,则处理事件将失败。

注意:如果您想将fields参数与message下的字段一起使用,请确保首先使用decode_json_fields,其中target: ""

例如,此配置

processors:
  - decode_json_fields:
      fields: message
      target: ""
  - append:
      target_field: target-field
      fields:
        - concrete.field
        - array.one
      values:
        - static-value
        - ""
      ignore_missing: true
      fail_on_error: true
      ignore_empty_values: true

concrete.fieldarray.one响应字段的值和静态值复制到target-field

{
  "concrete": {
    "field": "val0"
  },
  "array": {
      "one": [ "val1", "val2" ]
  },
  "target-field": [
    "val0",
    "val1",
    "val2",
    "static-value"
  ]
}