将批量数据索引到ElasticSearch的首选方法?

时间:2014-03-06 22:08:15

标签: sql-server elasticsearch elasticsearch-jdbc-river

我一直在关注ElasticSearch作为解决方案在我公司获得更好的搜索和分析功能。我们目前所有的数据都在SQL Server中,并且我已经成功安装了JDBC River并将一些测试数据输入ES。

Rivers似乎是can be deprecated in future releasesJDBC river由第三方维护。 Logstash似乎还不支持从SQL Server索引(不知道它是否是一个计划的功能)。

因此,对于我想将数据从SQL Server移动到ElasticSearch的情况,当SQL使用新数据更新时,索引数据和维护索引的首选方法是什么?

来自链接的帖子:

  

我们建议您在ES外部拥有索引流程,并确保其符合您的需求。

我不太确定从哪里开始。是否使用ES提供的API之一?

2 个答案:

答案 0 :(得分:4)

我们使用RabbitMQ将数据从SQL Server传输到ES。就这样,Rabbit负责排队和处理。

作为一个注释,我们每秒可以从SQL运行超过4000条记录到Rabbit。在将数据放入ES之前,我们会进行更多处理,但我们仍然以每秒超过1000条记录的形式插入ES。两端都非常令人印象深刻。兔子和ES都很棒!

答案 1 :(得分:2)

你可以做很多事情。您可以将数据放入rabbitmq或redis中,但您的主要问题是保持最新状态。我想你应该研究一个基于事件的应用程序。但是如果你真的只有sql server作为数据源,你可以使用时间戳和检查更新的查询。根据数据库的大小,您还可以重新索引整个数据集。

使用事件或基于查询的解决方案,您可以将这些更新推送到elasticsearch,可能使用批量API。

关于这样的自定义解决方案的好处是你可以考虑你的映射。如果您真的想要对数据做一些聪明的事情,这很重要。