【问题标题】:Remove input tags field with elasticsearch and logstash使用 elasticsearch 和 logstash 删除输入标签字段
【发布时间】:2020-05-20 14:32:09
【问题描述】:

我正在使用 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] 被创建为一个数组 ....

【问题讨论】:

    标签: elasticsearch logstash-configuration logstash-jdbc


    【解决方案1】:

    如果你想使用一个字段来过滤你的输出,你不能删除这个字段,它将被插入到 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]字段中添加您的标签,第二个mutate将删除您的字段,包括tags,然后您可以根据[@metadata][tags]进行过滤

    【讨论】:

    • 你能澄清一下%{field}、[field]和["field"]的区别吗?因为我认为它的工作方式相同......
    • 当你想引用一个字段来添加一个值或在条件中使用它时,你使用[field],当你想引用该字段的值时,你使用%{field},当复制或添加新字段,["field"] 只是一个包含字段的数组,这就是您在某些过滤器中使用的方式。要获得更好的解释,请查看documentation 中的此页面
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多