Logstash SQL Server Импорт данных
input {
jdbc {
jdbc_driver_library => "sqljdbc4.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://192.168.2.126\\SQLEXPRESS2014:1433;databaseName=test
jdbc_password => "sa@sa2015"
schedule => "0 0-59 0-23 * * *"
statement => "SELECT ID , Name, City, State,ShopName FROM dbo.Shops"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
}
}
filter {
}
output {
stdout { codec => rubydebug }
elasticsearch {
protocol => "http"
index => "shops"
document_id => "%{id}"
}
}
Я хочу импортировать данные в ElasticSearch, используя Logstash с использованием JDBC SQL Server в качестве входных данных, но получаю неверный путь к классу ошибок.
Кто-нибудь знает, как подключиться с помощью Logstash для правильного расположения для sqljdbc ФАЙЛ С КОНФИГ. ФАЙЛОМ
3 ответа
Я думаю, что путь к файлу "sqljdbc4.jar" не является правильным. Вот конфигурация, которую я использую для запроса данных из базы данных sql в эластичный поиск (logstash.conf):
input {
jdbc {
jdbc_driver_library => "D:\temp\sqljdbc\sqljdbc_4.2\enu\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://DBSVR_NAME;user=****;password=****;"
jdbc_user => "****"
jdbc_password => "****"
statement => "SELECT *
FROM [DB].[SCHEMA].[TABLE]"
}
}
filter {
}
output {
elasticsearch {
hosts => "localhost"
index => "INDEX_NAME"
document_type => "DOCUMENT_TYPE"
document_id => "%{id}"
protocol => "http"
}
stdout { codec => rubydebug }
}
Я скачал драйвер Microsoft JDBC для SQL Server отсюда: " https://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx"
Извлеченные файлы по пути, указанному в "jdbc_driver_library"
Затем я запустил команду плагина: "plugin install logstash-input-jdbc", чтобы установить плагин logstash input jdbc.
И, наконец, запустив logstash: "logstash -f logstash.conf".
Кроме того: я также использую Elasticsearch.Net в сервисном приложении.Net для обновления данных " http://nest.azurewebsites.net/"
И этот vid: "Добавление Elasticsearch к существующему приложению.NET / SQL Server", " https://www.youtube.com/watch?v=sv-MflnT9qI", запрещает использовать очередь компонента Service Broker для получения данных из sql. В настоящее время мы рассматриваем это как вариант.
Изменить - Обновлен хост для хостов, как в документации здесь https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html
input {
jdbc {
jdbc_driver_library => "C:\Program Files\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\enu\jre8\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://[SERVER NAME];databaseName=[DATABASE NAME];"
jdbc_user => "[USERNAME]"
jdbc_password => "[PASSWORD]"
statement => "SELECT eventId, sessionId FROM Events;"
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "events3"
}
stdout { codec => rubydebug }
}
Вам необходимо скачать драйверы sqljdbc с https://www.microsoft.com/en-au/download/details.aspx?id=11774 и где бы вы ни распаковали эти драйверы, просто укажите этот путь в jdbc_driver_library. Попробуйте распаковать эти драйверы по тому же пути, как показано в коде.
Сделай это так:-
input {
jdbc {
jdbc_driver_library => "sqljdbc4.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://192.168.2.126:1433;databaseName=test
jdbc_password => "sa@sa2015"
schedule => "0 0-59 0-23 * * *"
statement => "SELECT ID , Name, City, State,ShopName FROM dbo.Shops"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
}
}
filter {
}
output {
stdout { codec => rubydebug }
elasticsearch {
protocol => "http"
index => "shops"
document_id => "%{id}"
hosts => "your_host_here"
}
}