我在我的应用程序中使用Elastic Search 1.7版本,并使用river i的概念,使用以下文章将数据从SQL Server填充到ElasticSearch:https://www.pluralsight.com/blog/it-ops/elasticsearch-and-sql-server
URL: POST http://localhost:9200/_river/my_jdbc_river/_meta
JSON:
{
"type":"jdbc",
"schedule" : "0 0-59 0-23 ? * *",
"jdbc": {
"driver":"com.microsoft.sqlserver.jdbc.SQLServerDriver",
"url":"jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabase",
"user":"my_db_user","password":"password",
"sql":"select ID as _id, FirstName, LastName, DateOfBirth from People",
"index":"people",
"type":"person"
}
}
但是在弹性搜索2.0的文档中,它说河流已被弃用。有没有更好的方法将数据从SQL Server复制到弹性搜索2.0
替代的任何代码示例都非常有用
由于
答案 0 :(得分:13)
编辑: 这就是我一步一步地将数据从SQL Server同步到ElasticSearch,而没有弃用的河流。我是从头开始做的。如果您已经设置了河流,则可能已经完成了其中一些步骤。
{ "type":"jdbc",
"jdbc":{
"url":"jdbc:sqlserver://localhost:1433;databaseName=test",
"user":"test",
"password":"test",
"sql":"SELECT id as _id, id, name,email FROM test",
"index":"users",
"type":"user",
"autocommit":"true"
}
}
这篇文章非常有用:http://r2d2.cc/2015/08/05/elastic-search-on-windows-with-mysql-sql-server-2014-and-import-feeder/
答案 1 :(得分:4)
我们的计划是当我们将记录写入SQL时;然后我们接受主键并将其放入排队系统(在我们的例子中为RabbitMQ)。然后,该队列(或许多消费者)上有一个消费者从SQL中提取数据并将其插入ES。
拥有一个中间队列给我们带来了许多好处:
答案 2 :(得分:0)
如果你现在正在推荐这篇文章(像我一样),ElasticSearch继续前进,并且用于此的弹簧启动客户端存在兼容性问题,不支持ES 5.x.x.因此,您必须创建自己的Spring引导客户端,该客户端兼容/等待ES提供支持/使用备用解决方案将SQL Server桥接到ES。