logstash 使用聚合筛选器创建数组

k4ymrczo  于 2022-12-16  发布在  Logstash
关注(0)|答案(1)|浏览(175)

我尝试创建一个数组组的第一列emp_no,我有这样的结构在一个mysql表:

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

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

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

mlmc2os51#

map['salaries'] << {'salary' => event.get('salary')}

将此更改为

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

相关问题