jdbc - 我可以在Logstash中使用mutate过滤器将某些字段转换为genjdbc输入的整数吗?

标签 jdbc filter elasticsearch logstash kibana

我正在使用genjdbc输入插件作为Logstash来从DB2数据库获取数据。它运行完美,我在Kibana中获得了所有数据库列作为字段。
我的问题是在Kibana中所有字段都是字符串类型,而我希望数字字段为整数。我尝试了以下代码,但结果与没有filter子句的结果相同。

有人可以帮我解决这个问题吗?提前致谢!

logstash.conf代码:

  input { 
    genjdbc {  
      jdbcHost       => "XXX.XXX.XXX.XXX"
      jdbcPort       => "51260"
      jdbcTargetDB   => "db2"
      jdbcDBName     => "XXX"
      jdbcUser       => "XXX" 
      jdbcPassword   => "XXX"
      jdbcDriverPath => "C:\...\db2jcc4.jar"
      jdbcSQLQuery    => "SELECT * FROM XXX1"
      jdbcTimeField => "LOGSTAMP"
      jdbcPStoreFile => "C:\elk\logstash\bin\db2.pstore"
      jdbcURL => "jdbc:db2://XXX.XXX.XXX.XXX:51260/XXX"
      type => "table1"
    }
    genjdbc {  
      jdbcHost       => "XXX.XXX.XXX.XXX"
      jdbcPort       => "51260"
      jdbcTargetDB   => "db2"
      jdbcDBName     => "XXX"
      jdbcUser       => "XXX" 
      jdbcPassword   => "XXX"
      jdbcDriverPath => "C:\...\db2jcc4.jar"
      jdbcSQLQuery    => "SELECT * FROM XXX2"
      jdbcTimeField => "LOGSTAMP"
      jdbcPStoreFile => "C:\elk\logstash\bin\db2.pstore"
      jdbcURL => "jdbc:db2://XXX.XXX.XXX.XXX:51260/XXX"
      type => "table2"
    }
  }

  filter {
    mutate {
      convert => [ "T1", "integer" ]
      convert => [ "T2", "integer" ]
      convert => [ "T3", "integer" ]
    }
  }

  output {
    if [type] == "table1" {
      elasticsearch {
        host => "localhost"
        protocol => "http"
        index => "db2_1-%{+YYYY.MM.dd}"
      }
    }
    if [type] == "table2" {
      elasticsearch {
        host => "localhost"
        protocol => "http"
        index => "db2_2-%{+YYYY.MM.dd}"
      }
    }
  }

最佳答案

只要您尝试将其转换为整数的字段的名称为T1,T2,T3,并且您要插入的索引中没有任何数据,您就应该可以使用。如果索引中已经有数据,则需要删除索引,以便Logstash可以使用正确的映射重新创建它。

关于jdbc - 我可以在Logstash中使用mutate过滤器将某些字段转换为genjdbc输入的整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30055846/

相关文章:

java - 将Java连接到MySQL数据库

java - 从通配符到正则表达式

java.awt.image.Kernel 和负值不执行任何操作

elasticsearch - 具有持久队列的 Logstash

json - ElasticSearch-索引和搜索嵌套的JSON记录,其中键的嵌套级别在JSON文档中有所不同

java - 如果您的数据库层只有 JDBC,是否值得使用 Spring?

java - com.microsoft.sqlserver.jdbc.SQLServerException : Login failed for user 'sa'

postgresql - 将 postgreSQL 存储过程作为一个事务执行

language-agnostic - 关于过滤器的一般文档

elasticsearch - 带有Elasticsearch-rest-high-level-client的ElasticSearch代码未部署在嵌入式Jetty 8中