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

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

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

1)使用Solr DataImportHandler –

为此,我使用了由james创建的SolrMongoImporter,并在github上关注了他的教程

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

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

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

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

但Solr没有数据。

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

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

我使用的是MongoDB 2.0.4和Solr 3.6.1。

Hadoop是创建SOLR索引的选项。 我没有做过这方面的第一手资料,但是从etsy这样的人那里听说过。

在lucene革命的这个课程中 ,他们谈到了使用hadoop来更新一些SOLR核心中的索引。 不幸的是,我不认为课程材料是公开的。

在这次演讲中 ,演讲者谈到了mongo / hadoop的支持。

其他相关链接:

  • 通过Solr和Java MapReduce索引文件
  • 使用Hadoop创建Solr索引
  • Mongo-Hadoop连接器

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

虽然Solr中没有数据,但开始时我得到的输出与你描述的相同。 之后,我设置了复制模式,似乎创建了oplog文件,并且mongodbconnector正在与SOLR正确同步。 对我来说效果很好。

考虑使用mongoConnector。 查看http://blog.mongodb.org/post/29127828146/introducing-mongo-connector