我会使用带有jdbc input插件和elasticsearch output插件的Logstash.有一个blog article显示了这个解决方案的完整示例.
在installing Logstash之后,您可以使用我上面提到的插件创建一个配置文件,如下所示:
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "user"
jdbc_password => "1234"
jdbc_validate_connection => true
jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
schedule => "5m"
statement => "SELECT * FROM search WHERE timestamp > :sql_last_value"
}
}
output {
elasticsearch {
protocol => http
index => "searches"
document_type => "search"
document_id => "%{uid}"
host => "ES_NODE_HOST"
}
}
您需要确保更改一些值以匹配您的环境,但这应该可以解决您需要做的事情.
查询将每隔5分钟运行一次,并将获取所有搜索记录,其时间戳(更改该名称以匹配您的数据)比上次查询运行时更新.所选记录将隐藏在ES_NODE_HOST上位于Elasticsearch服务器中的搜索索引中.确保相应地更改索引和类型名称,以及主键字段的名称(即uid)以匹配您的数据.