Импорт данных 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 FILE WITH CONFIG FILE


person Vivek Gupta    schedule 28.07.2015    source источник
comment
Не могли бы вы предоставить конфигурацию logstash? Трудно понять, чего вы пытаетесь достичь.   -  person hurb    schedule 28.07.2015
comment
@herb Я пытаюсь получить данные из ms sql в elasticsearch с помощью logstash, но проблема в том, что данные вставляются и обновляются, но не удаляются в elasticsearch   -  person Vivek Gupta    schedule 29.07.2015


Ответы (3)


Я думаю, что путь к файлу "sqljdbc4.jar" неверен. Вот конфигурация, которую я использую для запроса данных из базы данных sql в 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 }
}

Я скачал драйвер 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/"

И это видео: «Добавление 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#plugins-outputs-elasticsearch-hosts

person user657527    schedule 07.08.2015
comment
Вы также можете поместить файл драйвера JDBC (sqljdbc42.jar в моем случае) в корневую папку вашей установки Logstash. Это сработало для меня с Logstash 2.4.0. - person Piotr Owsiak; 19.10.2016
comment
Исправление: приведенное выше утверждение верно, если это место, из которого вы запускаете Logstash (bin\logstash --config myconfigfile.conf). - person Piotr Owsiak; 19.10.2016

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. Попробуйте разархивировать эти драйверы по тому же пути, что и в коде.

person Rahul    schedule 07.02.2017

Сделай это так:-

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"

    }
}
person Honey Yadav    schedule 15.07.2018