Sha256: 3051e28dc2f71ad8c7aaa6df597befdbffb57e1ac2d38e0a5c9450bb661dc993

Contents?: true

Size: 739 Bytes

Versions: 53

Compression:

Stored size: 739 Bytes

Contents

module Searchkick
  class Indexer
    attr_reader :queued_items

    def initialize
      @queued_items = []
    end

    def queue(items)
      @queued_items.concat(items)
      perform unless Searchkick.callbacks_value == :bulk
    end

    def perform
      items = @queued_items
      @queued_items = []
      if items.any?
        response = Searchkick.client.bulk(body: items)
        if response["errors"]
          first_with_error = response["items"].map do |item|
            (item["index"] || item["delete"] || item["update"])
          end.find { |item| item["error"] }
          raise Searchkick::ImportError, "#{first_with_error["error"]} on item with id '#{first_with_error["_id"]}'"
        end
      end
    end
  end
end

Version data entries

53 entries across 53 versions & 3 rubygems

Version Path
searchkick-4.6.3 lib/searchkick/indexer.rb
searchkick-4.6.2 lib/searchkick/indexer.rb
searchkick-4.6.1 lib/searchkick/indexer.rb
searchkick-4.6.0 lib/searchkick/indexer.rb
searchkick-4.5.2 lib/searchkick/indexer.rb
searchkick-4.5.1 lib/searchkick/indexer.rb
searchkick-4.5.0 lib/searchkick/indexer.rb
searchkick-4.4.4 lib/searchkick/indexer.rb
searchkick-4.4.3 lib/searchkick/indexer.rb
searchkick-4.4.2 lib/searchkick/indexer.rb
searchkick-4.4.1 lib/searchkick/indexer.rb
searchkick-4.4.0 lib/searchkick/indexer.rb
searchkick-4.3.1 lib/searchkick/indexer.rb
searchkick-4.3.0 lib/searchkick/indexer.rb
searchkick-4.2.1 lib/searchkick/indexer.rb
searchkick-4.2.0 lib/searchkick/indexer.rb
searchkick-4.1.1 lib/searchkick/indexer.rb
searchkick-4.1.0 lib/searchkick/indexer.rb
searchkick-4.0.2 lib/searchkick/indexer.rb
searchkick-4.0.1 lib/searchkick/indexer.rb