【问题标题】:Logstash jdbc plugin: how use a date filter for a column?Logstash jdbc 插件:如何对列使用日期过滤器?
【发布时间】:2017-01-10 18:33:59
【问题描述】:

在我的 MS SQL 表中,我有一列日期存储为格式为“dd-mm-yyyy 00:00:00.000”的字符串 例如:1999-10-06 00:00:00.000 或 2000-04-27 00:00:00.000

在导入期间,我想将此列的值转换为日期类型。

我看到一个称为过滤器的功能可以进行这种类型的转换。 我找到了一些示例,但仅用于使用某种正则表达式解析 Beats 带来的日志全文行。

如何将此功能用于 sql 列? 例如,如何调整这个 conf 文件以使其真正工作?

 input {
    jdbc {
        jdbc_connection_string => "jdbc:localhost;"
          jdbc_user => "user"
          jdbc_password => "pass"
       jdbc_driver_library => "C:\Program Files (x86)\jdbc\sqljdbc_6.0\enu\sqljdbc42.jar"
        jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
        statement => "SELECT  * FROM SOLD"
    }
}

filter
{
     date {
         match => [ "DATE_COLUMN", "YYYY-MM-dd 00:00:00.000" ]
    }
}

output {
    elasticsearch { 
       hosts => "localhost:9200"
       index => "indexname"
       document_type => "typename"

    }
}

目前此配置不起作用并创建此 ES 文本字段:

 "date_column": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
          }
     }
  }

【问题讨论】:

    标签: elasticsearch logstash logstash-jdbc


    【解决方案1】:

    所以回答是让这个过滤器用小写写列的名称:

    filter
    {
         date {
             match => [ "date_column", "yyyy-MM-dd HH:mm:ss.SSS" ]
        }
    }
    

    并为此日期格式制作弹性搜索映射列:

    PUT /index
    {
         "mappings": {
          "type": {
            "properties": {
             "date_column": {
                "type": "date",
                "format": "yyyy-MM-dd HH:mm:ss.SSS"
              }
            }
          }
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您的数据库中有一个名为 myDateField 的字段,您应该在使用 JDBC 输入后获得一个同名的字段{}。然后,您可以要求 logstash 处理(“过滤”)并输出此数据。

      logstash 包含超过 50 个过滤器(请参阅the doc)。

      要将您的字段设为日期,请使用 date{} 过滤器。{}请注意,此过滤器通常用于设置 logstash 的“@timestamp”字段,但您可以根据需要将日期放入不同的字段(甚至覆盖相同的字段)。

      【讨论】:

      • 感谢您的回答,但我已经注意到过滤器是我需要使用的。我无法让它在我的情况下工作,我想看一个我想覆盖字段的例子。这可能很明显,但我的尝试不成功,我没有找到完整的例子
      • 发布您的尝试、您提供的输入、您收到的结果以及您想要的结果,将有助于人们诊断问题。
      猜你喜欢
      • 2014-10-20
      • 2016-11-08
      • 2016-05-21
      • 2016-01-13
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      相关资源
      最近更新 更多