如何从elasticsearch导入数据到sql服务器数据库?

How to import data from elasticsearch to sql server database?

我正在尝试将数据从 elasticsearch 导入到 sql 服务器数据库,我已经使用 logstash 将数据从 sql 服务器导入到 elastic search,我颠倒了输入和输出但它抛出了错误如第二个屏幕所示:

错误显示在日志中

Couldn't find any output plugin named 'jdbc'.

它可以作为社区插件使用,但不确定它是否适用于 Logstash 7(目前):

https://github.com/theangryangel/logstash-output-jdbc

check the below.

input
{
    stdin { }
}
output {
    jdbc {
        driver_jar_path => '/opt/sqljdbc42.jar'
        connection_string => "jdbc:sqlserver://server:1433;databaseName=databasename;user=username;password=password"
        statement => [ "INSERT INTO log (host, timestamp, message) VALUES(?, ?, ?)", "host", "@timestamp", "message" ]
    }

}

我已经成功完成了。你可以看我的博客或者配置。

博客: Output to SQL database by Logstash

好的。现在我们需要安装“logstash”输出 JDBC 插件。如果您没有该插件,这一点非常重要。是的!您不需要“输入”插件,因为它是默认设置.但是你需要输出JDBC插件。真的很重要。

> bin\logstash-plugin.bat install logstash-output-jdbc

配置:

input
{
elasticsearch {
hosts => [“localhost:9200″]
index => “yourindex"
}
}
output {
jdbc{
driver_jar_path => “C:\MSSQLJDBC\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
connection_string => “jdbc:sqlserver://localhost:1433;databaseName=databasename;user=username;password=userpassword"
statement => [ “INSERT into DB.TMP.samsamt (w, test1, test2, kkk) VALUES(?,?,?,?)", “client_num", “consignee_name", “@timestamp","host" ]
}
}

操作

> bin\logstash.bat -f config\elk.conf

并且语句将是转换设计部分。您需要在语句中映射所需的列。

(w, test1, test2, kkk)

是结构化 table 列的一部分。

“client_num", “consignee_name", “@timestamp","host"

是Elasticsearch中的映射列。