[英]Elasticsearch with Tire on Rails bulk import & indexing issue
[英]Elasticsearch Rails Bulk indexing
我在 postgres 數據庫中有大約 1.5M 的數據需要重新索引。 我在一個 sidekiq worker 中使用 ActiveRecord 的 find_each 方法將這些對象傳遞給另一個為每個對象重新編制索引的 worker。
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 進行批量請求?
根據盆景常見問題解答,他們:
我們限制並發請求的數量。 實際上,這允許的每秒實際請求數取決於您正在執行的請求的速度。 請求限制因不同的計划級別而異。 我們仍在進行更改並衡量現實世界的限制以確定合理的計划默認值。 限速請求將失敗並出現 HTTP 429 錯誤,表明您聯系我們以便我們可以與您合作以適應您的使用。 盆景常見問題
所以你可以增加你的使用量(我猜是付費的)或者你可以將你的請求批處理到低於每秒 1 次更新的限制,ElasticSearch 直接為你提供了一個批量 API ,這對你來說是一個很好的選擇,因為你已經在使用您可以利用集成的 elasticsearch-rails gem,這篇文章有一個很好的示例,我過去曾使用 elastic-rails 對記錄進行索引bulk_index
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.