我在使用JDBC Driver for ElasticSearch River从SQL Server 2012企业提供数据时遇到问题 .
这是我的设置:
-
操作系统:Windows 2008 R2 X64
-
ES:1.2.1
-
JDK:jdk-7u60-windows-x64
-
JRE:jre-7u60-windows-x64
-
用于SQL Server的Microsoft JDBC驱动程序4.0
当我运行jdbc将数据提供给ES时,我得到以下异常:
C:\Users\madhavan.ram>curl -XPUT 'localhost:9200/orders/order/_meta' -d' {"type": "jdbc", "jdbc": {"driver ": "com.microsoft.sqlserver.jdbc.SQLServerDriver","url": "jdbc:sqlserver://localhost:1433;databaseName=adventureworks", "user":"sa","password":"password", "sql": "SELECT * From [orders]","index": "orders","type": "order","bulk_size": 100,"max_retries": 5,"max_retries_wait": "30s","max_bulk_requests": 5,"bulk_flush_interval": "5s"}}' curl: (3) [globbing] nested brace in column 83 curl: (6) Could not resolve host: * curl: (6) Could not resolve host: From curl: (3) [globbing] bad range in column 6
看起来MSSQL 4.0驱动程序不支持JDK 1.7 . 但是如果我将JAVA_Home配置为JDK 1.6 .. ES在Windows上不起作用 . 有没有更好的方法将数据从SQL Server 2012加载到ElasticSearch?
2 回答
这个问题已经很老了,但现在 Elastic Search 可以在 Windows 上轻松设置 SQL Server .
Rivers已被弃用:
https://www.elastic.co/blog/deprecating-rivers
所以你应该使用elasticsearch-jdbc插件:
https://github.com/jprante/elasticsearch-jdbc
并在馈送器模式下使用JDBC导入器进行设置 .
基本上,一旦你安装了 Elastic Search 和 elasticsearch-jdbc 插件:
从以下位置下载并安装JDBC SQL Server驱动程序:http://www.microsoft.com/en-us/download/details.aspx?id=11774
创建 jdbc_sqlserver.json
从 Powershell 运行它
.\jdbc_sqlserver.ps1
这里描述了一个完整的设置:http://r2d2.cc/2015/08/05/elastic-search-on-windows-with-mysql-sql-server-2014-and-import-feeder/
我假设您已经安装了jdbc插件,如果没有,请按照此处的说明操作:https://github.com/jprante/elasticsearch-river-jdbc实际上您可以在此页面中找到设置河流所需的几乎所有内容 .
河流被放在一个名为_river的特殊索引中,而不是您的文档索引/订单 .
因此,如果您使用Sense(现在在Marvel中),下面的内容将起作用:
}}
您可以根据需要更改数据库名称,表名称和其他选项 .
在此之后,您可以使用GET / _river / your_river_name / _status来检查河流是否已经设置好 .
然后重新启动ES,您的河流应该开始自动从数据库中获取数据并将其编入索引!
希望这可以帮助