在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