【问题标题】:Ruby on Rails - Tire - elasticsearch, how to sort data being imported?Ruby on Rails - 轮胎 - elasticsearch,如何对导入的数据进行排序?
【发布时间】:2014-01-25 18:14:42
【问题描述】:

我们仍在生产系统中使用 (re)Tire 进行弹性搜索。
我的问题是如何为索引运行导入任务并为其提供来自 mongoid 的排序数据。例如。我想在用户可以访问系统的同时索引 9000 万条记录,并且我想实现最后插入的记录将首先被索引,以便用户可以找到最近的记录(以及最相关的记录 - 通过 created_at 排序数据).
那么有什么方法可以通过使用:
rake environment tire:import CLASS=Document FORCE=true

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch tire


    【解决方案1】:

    我会考虑手动导入它们。编写自己的脚本,readme 中有一个类似的示例

    User.order('created_at DESC').find_in_batches do |batch|
      Tire.index("users").import batch
    end
    

    或者使用他们的导入工具:

    User.index.import User.order('created_at DESC')
    

    如果您的网站被广泛使用,我会很想启动一个不同的核心或 solr 实例,导入所有内容,然后切换您的应用以使用新的。

    希望对您有所帮助。

    编辑:

    如果您使用的是 rails,请确保在脚本 (config/environment) 中包含您的 rails 环境。如果导入需要很长时间,那么您可能希望使用“nohup ruby​​ my_script.rb > script_out.log 2>&1 &”运行脚本,这样它就不会绑定到您的 ssh 会话。

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      相关资源
      最近更新 更多