elasticsearch - 使用 elasticsearch 和 logstash 删除输入标签字段
问题描述
我正在使用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 中的输入 [tags] 是作为数组创建的......
解决方案
如果你想使用一个字段来过滤你的输出,你不能删除这个字段,它将被插入到 elasticsearch 中,除非你使用这个metadata
字段,因为你似乎已经在尝试,但是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]
推荐阅读
- templates - 如何调用 GNU m4 嵌套函数?
- javascript - Axios POST 到节点故障
- javascript - 呈现错误时,对象作为具有状态的 React 子项无效
- mysql - CREATE PROCEDURE 语句中的 SQL 语法错误 1604
- flutter - Flutter 无法获取 ontap 函数来更改布尔列表
- python - Heroku 拒绝加载我的 django css 文件
- kotlin - 如何在 Kotlin 的 onCreate 之外使用 startActivity
- android - trackAppOpenedInBackground 的使用 - Android ParsePlatform
- hibernate - Hibernate 5:自定义鉴别器类型
- javascript - 使用 chrome 浏览器扩展检测图像上传事件?