class LogStash::Filters::Jdbc

This filter executes a SQL query and store the result set in the field specified as `target`.

For example you can load a row based on an id from in the event

source,ruby

filter {

jdbc {
  jdbc_driver_library => "/path/to/mysql-connector-java-5.1.34-bin.jar"
  jdbc_driver_class => "com.mysql.jdbc.Driver"
  jdbc_connection_string => ""jdbc:mysql://localhost:3306/mydatabase"
  jdbc_user => "me"
  jdbc_password => "secret"
  statement => "select * from WORLD.COUNTRY WHERE Code = :code"
  parameters => { "code" => "country_code"}
  target => "country_details"
}

}

Public Instance Methods

filter(event) click to toggle source
# File lib/logstash/filters/jdbc.rb, line 51
def filter(event)
  result = []
  #Prepare parameters from event values
  params = @parameters.inject({}) {|hash,(k,v)| hash[k] = event.get(event.sprintf(v)) ; hash }
  #Execute statement and collect results
  success = execute_statement(@statement,params) do |row|
    result << row
  end
  if success
    event.set(@target, result)
    filter_matched(event)
  else
    @tag_on_failure.each do |tag|
      event.tag(tag)
    end
  end
end
register() click to toggle source
# File lib/logstash/filters/jdbc.rb, line 45
def register
  @logger = self.logger
  prepare_jdbc_connection()
end