从Postgres导出数据时如何转换字段名称

时间:2018-08-14 10:09:46

标签: postgresql elasticsearch logstash

我正在尝试使用jdbc将数据从PostgreSQL导出到Elastic搜索。我的conf文件中有以下代码:

input {
    jdbc {
        jdbc_connection_string => "jdbc:postgresql://localhost:5432/db_office"
        jdbc_user => "postgres"
        jdbc_password => "useruser"
        jdbc_validate_connection => true
        jdbc_driver_library => "D:\logstash-6.0.0\logstash-6.0.0\config\postgresql-42.0.0.jre6.jar"
        jdbc_driver_class => "org.postgresql.Driver"
        statement => "SELECT * from customers"
        # clean_run => true
    }
}
output {
    elasticsearch {
        index => "poi_201708"
        document_type => "poi"
        document_id => "%{gid}" # unique id require
        hosts => "localhost:9200"
    }
    # stdout {
    #     codec => rubydebug
    # }
}
filter {
  mutate {
    convert => ["location", "geo_point"]
  }
}

在我的表格中,位置字段类型为文本。但我想将其更改为“ geo_location”。我知道我可以在导出数据后更改为geo_point。但是我正在尝试是否可以在导出时进行转换。当我尝试上面的conf文件时,出现以下错误:

Pipeline aborted due to error {:pipeline_id=>"main", :exception=>#<LogStash::ConfigurationError: translation missing: en.logstash.agent.configuration.invalid_plugin_register>, :backtrace=>["D:/logstash-6.0.0/logstash-6.0.0/vendor/bundle/jruby/2.3.0/gems/logstash-filter-mutate-3.1.6/lib/logstash/filters/mutate.rb:186:in `block in register'", "org/jruby/RubyHash.java:1343:in `each'", "D:/logstash-6.0.0/logstash-6.0.0/vendor/bundle/jruby/2.3.0/gems/logstash-filter-mutate-3.1.6/lib/logstash/filters/mutate.rb:184:in `register'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:388:in `register_plugin'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:399:in `block in register_plugins'", "org/jruby/RubyArray.java:1734:in `each'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:399:in `register_plugins'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:801:in `maybe_setup_out_plugins'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:409:in `start_workers'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:333:in `run'", "D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:293:in `block in start'"], :thread=>"#<Thread:0x5acabbfa@D:/logstash-6.0.0/logstash-6.0.0/logstash-core/lib/logstash/pipeline.rb:290 run>"}
[2018-08-14T17:02:06,659][ERROR][logstash.agent           ] Failed to execute action {:id=>:main, :action_type=>LogStash::ConvergeResult::FailedAction, :message=>"Could not execute action: LogStash::PipelineAction::Create/pipeline_id:main, action_result: false", :backtrace=>nil}

0 个答案:

没有答案
相关问题