elasticsearch Elasticsearch logstash jdbc:datetime列被解析为文本类型,elasticsearch,jdbc,logstash,elasticsearch,Jdbc,Logstash" /> elasticsearch Elasticsearch logstash jdbc:datetime列被解析为文本类型,elasticsearch,jdbc,logstash,elasticsearch,Jdbc,Logstash" />

elasticsearch Elasticsearch logstash jdbc:datetime列被解析为文本类型

elasticsearch Elasticsearch logstash jdbc:datetime列被解析为文本类型,elasticsearch,jdbc,logstash,elasticsearch,Jdbc,Logstash,我正在使用logstashjdbc插件导入一个表,我不明白为什么一个列被动态解析为tex 这是我的sql专栏: [DATE_VISA] [datetime] 我的日志存储配置文件: input { jdbc { jdbc_connection_string => "jdbc:sqlserver://192.168.100.205;databaseName=myDB;" jdbc_user => "user" jdbc_

我正在使用logstashjdbc插件导入一个表,我不明白为什么一个列被动态解析为tex

这是我的sql专栏:

[DATE_VISA] [datetime]
我的日志存储配置文件:

input {
    jdbc {
        jdbc_connection_string => "jdbc:sqlserver://192.168.100.205;databaseName=myDB;"
          jdbc_user => "user"
          jdbc_password => "pass"
        jdbc_driver_library => "C:\Program Files (x86)\sqljdbc_6.0\enu\sqljdbc42.jar"
        jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
        statement => "SELECT  [DATE_VISA] FROM [dbo].[TABLE] WHERE [DATE_VISA] IS NOT NULL"
    }
}

output {
    elasticsearch { 
       hosts => "localhost:9200"
       index => "myindex"
       document_type => "mytype"

    }
}
当我在ES中请求映射时,我看到:

  "date_visa": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
如果我试图在映射之前创建映射,则在导入过程中会引发错误

您知道会发生什么错误,以及如何进行筛选或转换吗?

两个选项:

  • 让logstash使用日期{}过滤器将其设置为日期
  • 让elasticsearch使用带有与数据库中的值匹配的“format”参数的模板将其设置为日期

感谢Answare,我看到了用于解析日志的日期过滤器,但我不知道如何使用jdbc实现这一点,请给我一个带有示例的链接好吗?这对我很有帮助,当你的查询运行时,你应该在日志中得到一个名为“date\u visa”的字段。将其用作日期{}过滤器的输入(可能会让它替换该字段,以便将date_visa转换为日期字段)。