【发布时间】:2014-09-16 16:41:20
【问题描述】:
我需要使 SOLR 索引与另一个存储库 (SQL DB) 保持同步。 SOLR 是源:对文档的所有操作(更新、删除、'插入')都是在 SOLR 中完成的,并由我无法控制的第三方软件触发。
我必须尽快完成,'一些刚刚好的东西'也是如此:
2 个预定作业:
- 第一个是针对 SOLR 中新插入和更新的文档:一个简单的 搜索查询给我带来了需要同步的文档,所以它 很容易将其放入我的数据库中。
- 第二个是删除: 这将获取 SOLR 中的所有 ID,并将它们与 DB 中的 ID 进行比较,即 多余的将被删除。
我将它们放在单独的工作中以获得更大的灵活性(通过配置启用/禁用),并且还因为每个同步计划都不同。
我对我的解决方案不满意,当时我没有太多时间深入研究 SORL 文档。 但是现在,我想知道是否有更好的方法来做到这一点。理想情况下,可以获得近乎实时的同步并按需触发。
可能是 SOLR 配置中的事件处理程序?
如果我可以挂钩更新事件并在数据库中触发相同的操作,我认为更新不会成为事件处理程序的问题。 (如果有人可以确认这是否是最好的方法)
对于删除,这是最需要的,因为我在 ID 之间进行的比较很繁重(SOLR 中的巨大 DB 和巨大的文档集)。
SOLR 中是否有任何事件处理程序可以让我知道正在删除哪些文档(提交删除查询时)?
我想在这里问可以节省我的时间。 另外,如果可能的话,给我一些样本会很棒。 (最好使用 .NET,但我愿意在 JAVA 中这样做,因为它是 SOLR 的框架或将两者混合。) 谢谢。
【问题讨论】: