我正在使用Logstash发送给elasticsearch,有人知道如何删除[tags]字段吗?
我正在使用此字段来筛选每个jdbc输入应输入的位置,下面留下一个示例。
我想要的是不要将该字段插入elasticsearch中,我尝试了remove_field,但是在使用它时,它不会直接插入elasticsearch中。
input {
jdbc {
jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/ifxjdbc-4.50.3.jar"
jdbc_driver_class => "com.informix.jdbc.IfxDriver"
jdbc_connection_string => "zzzz"
jdbc_user => "zzz"
jdbc_password => "zzz"
schedule => "*/5 * * * * *"
statement => "SELECT * FROM informix.test ORDER BY tes_id ASC"
tags => "test_001"
}
}
filter {
mutate {
remove_field => [ "@version","@timestamp" ]
}
}
output {
if "test_001" in [tags] {
# Para ELK
elasticsearch {
hosts => "localhost:9200"
index => "test"
document_type => "test"
}
}
}
尝试这样做:
mutate { add_field => { "[@metadata][mitags]" => [tags] }
remove_field => [tags]
}
但它不会插入elasticsearch中。
显然,elasticsearch中的输入[tags]被创建为一个数组....
最佳答案
如果要使用字段对输出进行过滤,则无法删除此字段,除非您使用 metadata
字段(好像您已经尝试过了),否则它将被插入elasticsearch中,但add_field
配置错误。
尝试下面的管道。
input {
jdbc {
... your jdbc config ...
tags => "test_001"
}
}
filter {
mutate {
add_field => { "[@metadata][tags]" => "%{tags}" }
}
mutate {
remove_field => ["@version","@timestamp","tags"]
}
}
output {
if "test_001" in [@metadata][tags] {
elasticsearch {
... your elasticsearch output ...
}
}
}
第一个mutate将在
[@metadata][tags]
字段中添加标签,第二个将删除您的字段,包括tags
,然后您可以根据[@metadata][tags]
进行过滤
关于elasticsearch - 使用elasticsearch和logstash删除输入标签字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61915741/