如何在SearchKick中通过命令行仅对单个Model执行重新索引
解决方案
你执行的rails Profile.reindex写法错误,rails命令无法直接识别Ruby类方法调用,因此触发command not found报错,可通过以下两种方式完成单个模型的重索引操作:
方法1:使用Searchkick内置的指定模型重索引命令(推荐)
该命令和全量重索引命令属于同一系列,只需通过CLASS参数指定模型名即可:
rails searchkick:reindex CLASS=Profile
生产环境执行需要额外指定环境变量:
RAILS_ENV=production rails searchkick:reindex CLASS=Profile
如果希望异步执行重索引任务,避免占用前台进程,可追加ASYNC=true参数:
rails searchkick:reindex CLASS=Profile ASYNC=true
方法2:通过rails runner直接执行类方法
如果需要自定义重索引逻辑(比如指定筛选范围、跳过部分记录),可以用rails runner直接执行Ruby代码调用模型的reindex方法:
rails runner "Profile.reindex"
示例:仅重索引最近7天更新的Profile数据可调整为:
rails runner "Profile.where('updated_at > ?', 7.days.ago).reindex"
内容的提问来源于stack exchange,提问作者Gerard
相关产品推荐
相关产品推荐

