Logstash-更改克隆文档中字段的值(Logstash克隆筛选器插件)

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之后调用的(该字段仅被删除,但没有添

日志存储7.8.1

我正试图用logstash从一个输入创建两个文档。不同的模板,不同的输出索引。在我尝试只更改克隆文档的值之前,一切都正常。 我需要在两个文档中都有一个具有不同值的字段-是否可以使用克隆过滤器插件?

文件A-[测试][事件]-trn

文档B(克隆文档)-(测试][事件]-spn

我认为如果我在克隆插件中使用remove_field和next add_field会起作用,但我担心排序有问题-也许remove_field方法是在add_field之后调用的(该字段仅被删除,但没有添加新值)

接下来,我尝试先向克隆文档添加值,然后再向原始文档添加值,但它总是使用两个值(orig和cloned)创建一个数组,并且我只需要在该字段中有一个值:/。 有人能帮我吗

配置:

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字段之前