【发布时间】:2020-05-15 01:27:35
【问题描述】:
我在 postgres 数据库中有大约 150 万数据需要重新索引。我在一个 sidekiq 工作人员中使用了 ActiveRecord 的 find_each 方法将这些对象传递给另一个为每个对象重新索引的工作人员。
worker1
# Perform in batch of 200 in 2 minutes.
type.find_each(batch_size: 200) do |object|
Elasticsearch::Worker2.perform_in(2.minutes, :index, type, object.id, "new_index_name")
end
工人2
def index_object(object, index_name)
object.__elasticsearch__.index_document(index: index_name)
end
但我遇到了以下问题:
[429] {"code":429,"message":"Concurrent request limit exceeded. Please consider batching your requests, or contact support@bonsai.io for help."}
有人知道如何使用 elasticsearch rails 进行批处理请求吗?
【问题讨论】:
标签: ruby-on-rails postgresql elasticsearch sidekiq