Sql server 用于Elasticsearch的JDBC馈线
我正在尝试创建一个JBDC馈线,将数据从SQL Server加载到elasticsearch中。我在这里使用指南:搜索标题“如何运行独立JDBC馈线” 我已成功下载并安装elasticsearch,并已将其安装并运行。我已经下载了用于SQL server的JDBC驱动程序,并将其移动到了./plugins/JDBC文件夹中 我将负责创建bash脚本。在今天之前,我甚至从来没有看过bash脚本,我很难让它工作,因为我还不知道一半的语法 elasticsearch目录为c:\elasticsearch-1.4.0 下面是我的bash脚本:Sql server 用于Elasticsearch的JDBC馈线,sql-server,bash,jdbc,
elasticsearch,bulkinsert,Sql Server,Bash,Jdbc,
elasticsearch,Bulkinsert,我正在尝试创建一个JBDC馈线,将数据从SQL Server加载到elasticsearch中。我在这里使用指南:搜索标题“如何运行独立JDBC馈线” 我已成功下载并安装elasticsearch,并已将其安装并运行。我已经下载了用于SQL server的JDBC驱动程序,并将其移动到了./plugins/JDBC文件夹中 我将负责创建bash脚本。在今天之前,我甚至从来没有看过bash脚本,我很难让它工作,因为我还不知道一半的语法 elasticsearch目录为c:\elasticsearc
#!/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 )"
我这样做的原因是因为我正在寻找最好的方法,从sql server一次性将数千万条记录插入elasticsearch,即批量插入
我们的第一次迭代涉及获取表中的每一行数据,将其转换为JSON文档,并插入到ES中。这花费了大约10个小时的时间来获取所有数据
提前感谢您的建议。而不是:
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文件,请不要使用引号,这样globbing就可以工作了:
# 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// /:}" \
我希望这有帮助。如果你能提供更多关于脚本失败的细节,我可以提供更多帮助。您是否收到了特定的错误消息?您是否能够使其正常工作?