【问题标题】:How to generate @timestamp in logstash by combining two fields / columns of input csv如何通过组合输入csv的两个字段/列在logstash中生成@timestamp
【发布时间】:2015-03-05 13:37:28
【问题描述】:

我们在 csv 文件中有来自外部来源的数据,如下所示:

orderid,OrderDate,BusinessMinute,Quantity,Price
31874,01-01-2013,00:06,2,17.9

数据在一列中有date,在另一列中有time - 我需要通过将这两列组合在一起来生成时间戳。

我正在使用csv filter 在logstash 中使用以下配置从文件中读取上述数据 - 它正在生成自己的时间戳:

input {  
  file {
      path => "/root/data/import/Order.csv"
      start_position => "beginning"
  }
}
filter {
    csv {
        columns => ["orderid","OrderDate","BusinessMinute","Quantity","Price"]
        separator => ","
    } 
}
output {  
    elasticsearch {
        action => "index"
        host => "localhost"
        index => "demo"
        workers => 1
    }
}

如何将OrderDate + Business Minute组合成@timestamp

【问题讨论】:

    标签: csv elasticsearch logstash


    【解决方案1】:

    使用mutate filter 将OrderDate 和BusinessMinute 字段组合成一个(临时)字段,然后使用date filter 并让它在成功时删除该字段。

    filter {
      mutate {
        add_field => {
          "timestamp" => "%{OrderDate} %{BusinessMinute}"
        }
      }
      date {
        match => ["timestamp", "..."]
        remove_field => ["timestamp"]
      }
    }
    

    【讨论】:

    • 当我使用此代码时,它会添加一个包含精确字符串“%{OrderDate} %{BusinessMinute}”的新字段;不是实际的字段。有什么建议吗?
    • 这表示您没有设置任何此类字段。如果您的日期和时间字段有不同的名称,您显然必须调整答案中的示例。
    猜你喜欢
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多