【问题标题】:MongoDB river VS RabbitMQ river VS Background job (resque)MongoDB 河 VS RabbitMQ 河 VS 后台作业(resque)
【发布时间】:2012-09-14 20:56:29
【问题描述】:

我想将我的 Rails 项目从 Solr 切换到 Elastic Search(只是为了好玩),但我不确定索引文档的最佳方法。现在我正在使用 Resque(后台工作)来完成这项任务,但我一直在挖掘 Elastic Search 上的“河流”,它们看起来很有希望。

任何有这方面经验的人可以给我一些提示吗?性能结果?可扩展性?

提前致谢

P.S:虽然目前只是为了好玩,但我想从 Solr 迁移到 Elastic Search,这是一个更大的生产项目。

【问题讨论】:

    标签: solr indexing elasticsearch resque


    【解决方案1】:

    很难从您的问题中了解您的情况/疑虑。使用 elasticsearch,您可以将数据推入,也可以使用河流来拉取数据。

    当您推送数据时,您可以控制馈送器的运行方式、处理文档的方式以及整个管道的外观(收集数据 > 语言分析 > 等等 > 索引)。使用河流可能是一种方便的方式,可以快速将某些数据从某个来源(CouchDB、RDBMS)拉入 elasticsearch,或者持续拉取数据,例如。来自 RabbitMQ 流。

    由于您在 Rails 项目的上下文中考虑使用 elasticsearch,因此您可能会在某个时候尝试Tire gem。假设您使用的是与 ActiveModel 兼容的 ORM(用于 SQL 或 NoSQL 数据库),导入非常简单:

    $ rake environment tire:import CLASS=MyClass
    

    请参阅Tire 文档和relevant Railscasts episode 了解更多信息。

    【讨论】:

    • 谢谢卡米。还有几个问题:Tire 如何在内部将 Rails 数据库(在我的例子中是 MongoDB)与 Elastic Search 索引同步?如果索引任务失败(即 Elastic Search 关闭)会发生什么?只是为了检查,我猜一旦你定义了映射,它只会更新 Elastic Search 索引是映射的参数之一已经改变,对吧?在此先感谢,对于这些新手问题,我们深表歉意
    • 一条评论有很多问题......(错误......下面更新:)
    • 1.您可以选择同步方式——Tire 提供了一个回调模块,用于同步模型更新/删除。您可能想使用自己编写的其他策略。 2. 当索引失败时,默认情况下不会发生任何事情——这是你设置规则的不同游戏。 3. Tire 将根据 a) 您的映射,b) 您的 to_indexed_json 方法更新 ES 索引
    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2016-05-29
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多