前言
今天有人问了一个问题,在输出es追加后缀的时候,想用数据里面的字段,但是又不想保存改字段到es。
正文
这里用到的是metadata,
官网其实有一个示例:
是我们需要把数据入到不同的索引中,同时我们也不想在es里多保存一个字段,
filter {
if [log_type] in [ "test", "staging" ] {
mutate { add_field => { "[@metadata][target_index]" => "test-%{+YYYY.MM}" } }
} else if [log_type] == "production" {
mutate { add_field => { "[@metadata][target_index]" => "prod-%{+YYYY.MM.dd}" } }
} else {
mutate { add_field => { "[@metadata][target_index]" => "unknown-%{+YYYY}" } }
}
}
output {
elasticsearch {
index => "%{[@metadata][target_index]}"
}
}
当然也可以直接用在正则获取字段时,如下
filter {
grok {
match => {"message" => "%{YEAR:[@metadata][year]}"}
}
}
output {
elasticsearch {
index => "test-%{year}"
}
}