java - 在 MongoDB 和 Apache Solr 之间同步数据的简单方法

标签 java mongodb solr

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

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

1) 使用 Solr DataImportHandler -

为此,我使用了 james 创建的 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 集成的好教程。

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

我正在使用 MongoDB 2.0.4 和 Solr 3.6.1。

最佳答案

Hadoop 是创建 SOLR 索引的一个选项。我没有亲 body 验过,但从人们那里听说过such as etsy谁是。

开启 this course在 lucene 革命中,他们谈到了使用 hadoop 更新某些 SOLR 内核中的索引。不幸的是,我不认为类(class) Material 是公开的。

this talk演讲者谈到了对 mongo/hadoop 的支持。

其他相关链接:

关于java - 在 MongoDB 和 Apache Solr 之间同步数据的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542564/

相关文章:

php - 在 Laradock 应用程序中找不到类 'MongoId'

mongodb - 一种确保在 MongoDb 的 findAndModify 中独占读取的方法?

solr - 避免由于词干而在Solr上缓慢突出显示

java - "worker"这个概念在编程中是什么意思?

java - Elasticache Memcached 中 key 的最大长度是多少?

java - 如何终止正在读取输入的循环?

Solr 字段在查询结果中不可见

java - 监控 InputStream 的最佳方式是什么?

mongodb:查询两个日期字段之间的时间段

mysql - 当删除 mysq 查询限制时,来自 mysql 的 solr 数据导入终止