diff --git a/lib/searchkick/bulk_indexer.rb b/lib/searchkick/bulk_indexer.rb index af71f80..88f1154 100644 --- a/lib/searchkick/bulk_indexer.rb +++ b/lib/searchkick/bulk_indexer.rb @@ -22,20 +22,25 @@ module Searchkick # determine which records to delete delete_ids = record_ids - records.map { |r| r.id.to_s } - delete_records = delete_ids.map do |id| - m = klass.new - m.id = id - if routing[id] - m.define_singleton_method(:search_routing) do - routing[id] - end + delete_records = + delete_ids.map do |id| + construct_record(klass, id, routing[id]) end - m - end import_inline(records, delete_records, method_name: nil) end + def construct_record(klass, id, routing) + record = klass.new + record.id = id + if routing + record.define_singleton_method(:search_routing) do + routing + end + end + record + end + def import_scope(relation, resume: false, method_name: nil, async: false, full: false, scope: nil, mode: nil) if scope relation = relation.send(scope) diff --git a/lib/searchkick/reindex_v2_job.rb b/lib/searchkick/reindex_v2_job.rb index 3696305..0984504 100644 --- a/lib/searchkick/reindex_v2_job.rb +++ b/lib/searchkick/reindex_v2_job.rb @@ -23,15 +23,7 @@ module Searchkick nil end - unless record - record = model.new - record.id = id - if routing - record.define_singleton_method(:search_routing) do - routing - end - end - end + record ||= model.searchkick_index.send(:bulk_indexer).construct_record(model, id, routing) RecordIndexer.new(record).reindex(method_name, mode: :inline) end -- libgit2 0.21.0