Logstash JSON 解析 - 忽略或删除子树
Logstash JSON Parse - Ignore or Remove Sub-Tree
我将 JSON 发送到 logstash,配置如下:
filter {
json {
source => "event"
remove_field => [ "event" ]
}
}
这是我要发送的 JSON 对象示例:
{
"@timestamp": "2015-04-07T22:26:37.786Z",
"type": "event",
"event": {
"activityRecord": {
"id": 68479,
"completeTime": 1428445597542,
"data": {
"2015-03-16": true,
"2015-03-17": true,
"2015-03-18": true,
"2015-03-19": true
}
}
}
}
由于 activityRecord.data
对象的任意性,我不希望 logstash 和 elasticsearch 索引所有这些日期字段。照原样,我将 activityRecord.data.2015-03-16
视为要在 Kibana 中过滤的字段。
有没有办法忽略这个数据子树?或者至少在它已经被解析之后删除它?我尝试 remove_field
使用通配符等等,但没有成功。
虽然不完全直观,但 documented 子字段引用是用方括号表示的,例如[字段][子字段],所以这就是你必须与 remove_field:
一起使用的内容
mutate {
remove_field => "[event][activityRecord][data]"
}
要使用通配符匹配删除字段,您必须使用 ruby filter。
我将 JSON 发送到 logstash,配置如下:
filter {
json {
source => "event"
remove_field => [ "event" ]
}
}
这是我要发送的 JSON 对象示例:
{
"@timestamp": "2015-04-07T22:26:37.786Z",
"type": "event",
"event": {
"activityRecord": {
"id": 68479,
"completeTime": 1428445597542,
"data": {
"2015-03-16": true,
"2015-03-17": true,
"2015-03-18": true,
"2015-03-19": true
}
}
}
}
由于 activityRecord.data
对象的任意性,我不希望 logstash 和 elasticsearch 索引所有这些日期字段。照原样,我将 activityRecord.data.2015-03-16
视为要在 Kibana 中过滤的字段。
有没有办法忽略这个数据子树?或者至少在它已经被解析之后删除它?我尝试 remove_field
使用通配符等等,但没有成功。
虽然不完全直观,但 documented 子字段引用是用方括号表示的,例如[字段][子字段],所以这就是你必须与 remove_field:
一起使用的内容mutate {
remove_field => "[event][activityRecord][data]"
}
要使用通配符匹配删除字段,您必须使用 ruby filter。