Searchkick 重新索引未拾取排队的更改

问题描述 投票:0回答:1

我正在遵循自述文件的排队部分,它似乎工作正常,直到我开始重新索引操作。我注意到我似乎没有得到重新索引开始后发生的新更改。例如,如果我有一个模型产品:

class Product < ApplicationRecord
  searchkick callbacks: :queue
end
  1. Product.reindex(mode: :async)

    • 当索引仍在重建索引时:
      1. new_product = Product.create
      2. Searchkick::ProcessQueueJob.perform_now(class_name: "Product")
  2. new_product 未包含在新索引中

处理此问题的最佳方法是什么,以便 new_product 将包含在新索引中?

searchkick
1个回答
0
投票

无需设置

Product.reindex(mode: :async)
当您使用
callbacks: :queue
.

作业将添加到您的

searchkick
服务器中名为
sidekiq
的队列中 您还需要配置 redis,例如:

 config_redis = { host: ENV.fetch('REDIS_HOST', '127.0.0.1'), port: ENV.fetch('REDIS_PORT', 6380) }
 Searchkick.redis = Redis.new(config_redis)

然后在您的服务中或您通常触发数据库修改的地方,之后您可以调用重新索引。

 Searchkick::ProcessQueueJob.perform_later(class_name: "<your model name>")
© www.soinside.com 2019 - 2024. All rights reserved.