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}"
}
}
Je souhaite importer des données dans ElasticSearch à l'aide de Logstash en utilisant JDBC SQL Server en tant qu'entrée, mais le chemin d'accès à la classe d'erreur est incorrect.
Tout le monde sait comment se connecter à l'aide de Logstash pour l'emplacement correct de sqljdbc FILE WITH CONFIG FILE
Je pense que le chemin d'accès au fichier "sqljdbc4.jar" n'est pas correct. Voici la configuration que j'utilise pour interroger les données d'une base de données SQL dans elasticsearch (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 }
}
J'ai téléchargé le pilote JDBC Microsoft pour SQL Server à partir d'ici: " https://msdn.Microsoft.com/en-us/sqlserver/aa937724.aspx "
Extraire les fichiers dans le chemin spécifié dans "jdbc_driver_library"
J'ai ensuite lancé la commande du plug-in: "plugin install logstash-input-jdbc" pour installer le plugin jdbc d'entrée logstash.
Et enfin, exécutez logstash: "logstash -f logstash.conf".
En passant: j'utilise également Elasticsearch.Net dans une application de service .Net pour actualiser les données " http://nest.azurewebsites.net/ "
Et cette vidéo: "Ajout d'Elasticsearch à une application .NET/SQL Server existante" " https://www.youtube.com/watch?v=sv-MflnT9qI " utilise une file d'attente Service Broker pour obtenir les données. en sql. Nous explorons actuellement cette option.
Edit - Mise à jour hôte à hôte comme dans la documentation ici https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-hosts
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 }
}
Vous devez télécharger les pilotes sqljdbc depuis https://www.Microsoft.com/en-au/download/details.aspx?id=11774 Où que vous décompressez ces pilotes, indiquez ce chemin dans jdbc_driver_library . Essayez de décompresser ces pilotes dans le même chemin, comme indiqué dans le code.
Fais-le comme ça:-
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"
}
}