2014-11-18 2 views
0

Я пытаюсь создать фидер JBDC для загрузки данных с SQL Server в elasticsearch. Я использую руководство здесь: https://github.com/jprante/elasticsearch-river-jdbc (поиск заголовка «Как запустить автономный фидер JDBC»).JDBC-фидер для Elasticsearch

Я успешно загрузил и установил elasticsearch и включил его. Я загрузил драйвер JDBC для SQL-сервера и переместил его в папку ./plugins/jdbc.

Я добираюсь до части, которая предполагает создание сценария bash. До сегодняшнего дня я даже не смотрел сценарий bash, и у меня возникли проблемы с его работой, поскольку я еще не знаю половины синтаксиса.

elasticsearch каталог C: \ elasticsearch-1.4.0

и вот мой Баш скрипт:

#!/bin/sh 

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

# ES_HOME required to detect elasticsearch jars 
export ES_HOME= C:\elasticsearch-1.4.0 

echo ' 
{ 
    "elasticsearch" : { 
     "cluster" : "elasticsearch", 
     "host" : "localhost", 
     "port" : 9200 
    }, 
    "type" : "jdbc", 
    "jdbc" : { 
     "url" : "jdbc:sqlserver://localhost;databaseName=MyDatabase", 
     "user" : "MyUser", 
     "password" : "MyPassword", 
     "sql" : "select * From MyTable", 
     "treat_binary_as_string" : true, 
     "index" : "MyFirstESIndex" 
     } 
} 
' | java \ 
    -cp "${DIR}/*" \ 
    org.xbib.elasticsearch.plugin.jdbc.feeder.Runner \ 
    org.xbib.elasticsearch.plugin.jdbc.feeder.JDBCFeeder 

Что мне нужно сделать, чтобы обновить в этом сценарии? Это что-то в этой строке сценария:

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

Причина Я делаю это потому, что я ищу лучший способ для вставки потенциально десятки миллионов записей в elasticsearch от SQL-сервера в одном ходу, т.е. объемная вставка.

Наша первая итерация включает в себя получение каждой строки данных в таблице, преобразование ее в документ JSON и вставку в ES. Это заняло около 10 часов, чтобы получить все данные.

Заранее благодарим за любые советы.

+0

Вы когда-нибудь могли заставить это работать? – BrandonG

ответ

0

Вместо этого:

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

Сделайте это, если это важно для вас, чтобы быть в этом рабочем каталоге:

DIR="$(dirname "${BASH_SOURCE[0]}")" 
cd $DIR 

Кроме того, если это не опечатка, следует удалить пробел после ES_HOME= , а в случае сомнений используются котировки:

export ES_HOME="C:\elasticsearch-1.4.0" 

Кроме того, с Java -cp аргумент, если вы хотите, чтобы включить все файлы JAR (которые я предполагаю), не используйте кавычки, так в универсализации работы:

# Since you are already in the directory, you don't need DIR 
JARS=$(echo ./*jar) 
... 
# On the cp line, substitute spaces with : to build the classpath 
-cp "${JARS// /:}" \ 

Я надеюсь, что это помогает. Если вы можете дать более подробную информацию о том, как скрипт терпит неудачу, я мог бы помочь больше. Вы получаете сообщения об ошибках?

Смежные вопросы