elasticsearch,indexing,Sql Server,elasticsearch,Indexing" /> elasticsearch,indexing,Sql Server,elasticsearch,Indexing" />

Sql server 如何在没有代码的情况下使用SQLServer使ElasticSearch保持最新?

Sql server 如何在没有代码的情况下使用SQLServer使ElasticSearch保持最新?,sql-server,elasticsearch,indexing,Sql Server,elasticsearch,Indexing,我正在处理SQLServer中的一个表,我需要在ElasticSearch中近乎实时地索引该表。此表中的记录从各个点(遗留代码、存储过程等)添加/更新/删除,因此检测代码以查找与此表交互的所有区域是不可行的。什么技术和/或工具可以实现这一点 注意:SQLServer中的表包含大约10列,最多可以包含100万行。如果您想用最少的代码来完成,那么您可以使用Logstash jdbc插件进行设置(现在Elasticsearch中不再支持river概念)。在表中,有一个上次更新的时间戳列。您可以将轮询查

我正在处理SQLServer中的一个表,我需要在ElasticSearch中近乎实时地索引该表。此表中的记录从各个点(遗留代码、存储过程等)添加/更新/删除,因此检测代码以查找与此表交互的所有区域是不可行的。什么技术和/或工具可以实现这一点


注意:SQLServer中的表包含大约10列,最多可以包含100万行。

如果您想用最少的代码来完成,那么您可以使用Logstash jdbc插件进行设置(现在Elasticsearch中不再支持river概念)。在表中,有一个上次更新的时间戳列。您可以将轮询查询配置为基于它,以便它可以拾取自上次运行以来的更改。确保在此时间戳列上定义了索引。因为这将是一个轮询过程,所以不要过多地设置很低的轮询间隔,因为这可能会给SQL DB服务器带来不必要的工作负载


<>如果你准备好了正确的方式并准备花时间编码,那么你可能应该考虑SQLServer Service Bug选项。您可以在表上使用触发器写入消息,在队列上使用外部轮询/触发器进程拾取消息/更改并将其推送到Elasticsearch。

感谢您的快速响应。当你说保持低轮询间隔时,你只关心SQLServer而不是ElasticSearch?对。我说的是SQLServerDB上的负载。通过一些测试,您应该能够确定什么频率是可以接受的,而不会不必要地增加SQL Server上的负载。我认为使用轮询来创建service broker比使用触发器要好。思想,@askids?这完全取决于数据量和轮询频率。如果您需要接近实时的更新,那么轮询不是正确的解决方案。但是,如果您可以接受一些延迟,并且您的表的结构支持轮询,那么您可以使用轮询。同样对于使用ServiceBroker,您不必使用触发器。这只是一种外部化的方式。否则,您也可以直接从SP向代理发送消息。触发器本身会带来额外的开销。并非所有情况下都是坏的。但并非在所有情况下都推荐。没有一刀切的答案:)