Logstash-更改克隆文档中字段的值(Logstash克隆筛选器插件)
日志存储7.8.1 我正试图用logstash从一个输入创建两个文档。不同的模板,不同的输出索引。在我尝试只更改克隆文档的值之前,一切都正常。 我需要在两个文档中都有一个具有不同值的字段-是否可以使用克隆过滤器插件? 文件A-[测试][事件]-trn 文档B(克隆文档)-(测试][事件]-spn 我认为如果我在克隆插件中使用remove_field和next add_field会起作用,但我担心排序有问题-也许remove_field方法是在add_field之后调用的(该字段仅被删除,但没有添加新值) 接下来,我尝试先向克隆文档添加值,然后再向原始文档添加值,但它总是使用两个值(orig和cloned)创建一个数组,并且我只需要在该字段中有一个值:/。 有人能帮我吗 配置:Logstash-更改克隆文档中字段的值(Logstash克隆筛选器插件),logstash,logstash-configuration,Logstash,Logstash Configuration,日志存储7.8.1 我正试图用logstash从一个输入创建两个文档。不同的模板,不同的输出索引。在我尝试只更改克隆文档的值之前,一切都正常。 我需要在两个文档中都有一个具有不同值的字段-是否可以使用克隆过滤器插件? 文件A-[测试][事件]-trn 文档B(克隆文档)-(测试][事件]-spn 我认为如果我在克隆插件中使用remove_field和next add_field会起作用,但我担心排序有问题-也许remove_field方法是在add_field之后调用的(该字段仅被删除,但没有添
input {
file {
path => "/opt/test.log"
start_position => beginning
}
}
filter {
grok {
match => {"message" => "... grok...."
}
}
mutate {
add_field => {"[test][event]" => "trn"}
}
clone {
clones => ["cloned"]
#remove_field => [ "[test][event]" ] #remove the field completely
add_field => {"[test][event]" => "spn"} #not added
add_tag => [ "spn" ]
}
}
output {
if "spn" in [tags] {
elasticsearch {
index => "spn-%{+yyyy.MM}"
hosts => ["localhost:9200"]
template_name => "templ1"
}
stdout { codec => rubydebug }
} else {
elasticsearch {
index => "trn-%{+yyyy.MM}"
hosts => ["localhost:9200"]
template_name => "templ2"
}
stdout { codec => rubydebug }
}
}
如果要使添加的字段取决于事件是克隆事件还是原始事件,请选中[type]字段
clone { clones => ["cloned"] }
if [type] == "cloned" {
mutate { add_field => { "foo" => "spn" } }
} else {
mutate { add_field => { "foo" => "trn" } }
}
添加\ u字段始终在删除\ u字段之前