如何将数据从elasticsearch导入到SQL Server数据库中?

时间:2019-05-16 08:52:05

标签: sql-server elasticsearch logstash kibana

我正在尝试将数据从elasticsearch导入到sql server数据库中,我已经使用logstash完成了从sqlserver到弹性搜索的数据导入,我反转了输入和输出,但是它抛出了错误,如第二个屏幕所示:

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:1)

错误显示在日志中

  

找不到任何名为“ jdbc”的输出插件。

它可以作为社区插件使用,尽管不确定它是否可以与Logstash 7一起使用:

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

答案 1 :(得分:1)

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

博客: Output to SQL database by Logstash

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

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

config:

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)

是结构化表格列的一部分。

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

是Elasticsearch中的映射列。

答案 2 :(得分:0)

他们提供了以下语法,我应该在哪里指定输入文档。 enter image description here

答案 3 :(得分:0)

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" ]
    }

}