追加处理器编辑

append 处理器用于将一个或多个值追加到现有数组中(如果目标字段已存在并且是数组)。如果字段存在并且是一个标量值,则将标量值转换为数组,并将一个或多个值追加到该数组中。这里的“值”可以是一个或多个静态值,也可以是“字段”键下列出的一个或多个字段的值。

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"
  ]
}