【问题标题】: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 会话。