在MongoDB和Apache Solr之间同步数据的简便方法

时间:2012-11-24 15:21:26

标签: java mongodb solr

我最近开始使用MongoDB和Apache Solr。我使用MongoDB作为数据存储,我希望Apache Solr为我的应用程序中的搜索功能创建数据索引。

经过一些研究后我发现,基本上有两种方法可以在MongoDB和Solr之间同步数据。

1)使用Solr DataImportHandler -

为此,我使用了由詹姆斯创建的SolrMongoImporter,并按照github上的教程

我能够成功运行Import Handler并且Solr识别出ImportHandler,但它没有将任何文档导入solr。每当它说更新的文件= 0。

2)然后我尝试切换到MongoDB端,看看是否存在任何东西,我找到了 MongoDBConnector由10gen提供。

当我按照说明操作并运行连接器时,它会尝试将大量文档发布到Solr,并提供以下输出。

2012-11-24 15:15:20,665 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.010 seconds.
2012-11-24 15:15:21,674 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.009 seconds.
2012-11-24 15:15:22,683 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.008 seconds.
2012-11-24 15:15:23,694 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.010 seconds.
2012-11-24 15:15:24,702 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.008 seconds.
2012-11-24 15:15:25,711 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.008 seconds.
2012-11-24 15:15:26,722 - INFO - Finished 'http://localhost:8983/solr/update/?commit=true' (POST) with body '<commit />' in 0.010 seconds.

但Solr没有数据。

我想知道哪种方法对你们有用,有没有关于MongoDB和Solr Integration的好教程。

另外,我正在寻找MongoDB和solr之间的实时同步,即只要将任何产品添加到我的mongodb,我希望它在solr索引中更新并反映在搜索结果中。

我正在使用MongoDB 2.0.4和Solr 3.6.1。

3 个答案:

答案 0 :(得分:2)

Hadoop是创建SOLR索引的选项。我没有做过这方面的第一手资料,但是已经听过such as etsy的人。

this course的lucene革命中,他们讨论了使用hadoop来更新某些SOLR核心中的索引。不幸的是,我不认为课程材料是公开的。

this talk,发言者谈到了mongo / hadoop的支持。

其他相关链接:

答案 1 :(得分:1)

您是否设置了副本设置模式? http://docs.mongodb.org/manual/reference/replica-configuration/

最初,虽然Solr中没有数据,但我得到的结果与您描述的相同。之后,我设置了复制模式,似乎创建了oplog文件,并且mongodbconnector正在与SOLR正确同步。对我来说非常好。

答案 2 :(得分:0)