使用聚合过滤器创建数组

Creating an array by using aggregate filter

我尝试按第一列 emp_no 创建一个数组组,我在 mysql table:

中有这个结构
emp_no|salary|
------+------+
 10001| 60117|
 10001| 62102|
 10001| 66074|
 10001| 66596|
 10001| 66961|
 10001| 71046|
 10001| 74333|
 10001| 75286|

在 logstash 中,我尝试使用此配置进行聚合过滤器:

filter {
    aggregate {
    task_id => "%{emp_no}"
    code => "
      map['emp_no'] = event.get('emp_no')
      map['salaries'] ||= []
      map['salaries'] << {'salary' => event.get('salary')}
      event.cancel()
    "
    push_previous_map_as_event => true
    timeout => 3
    }
}

但是这样我得到了这个输出:

{
  "emp_no": 10001,
  "salaries": [
    {
      "salary": 60117
    },
    {
      "salary": 62102
    },
    {
      "salary": 66074
    },
    {
      "salary": 66596
    },
    {
      "salary": 66961
    },
    {
      "salary": 71046
    },
    {
      "salary": 74333
    }
  ]
}

我需要这个输出,创建一个名为 salary 的数组,其中只包含薪水值:

{
  "emp_no": 10001,
  "salaries": [
    60117,
    62102,
    66074,
    66596,
    66961,
    71046,
    ...,
  ]
}
map['salaries'] << {'salary' => event.get('salary')}

将此更改为

map['salaries'] << event.get('salary')