使用聚合过滤器创建数组
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')
我尝试按第一列 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')