Commit 75e16164bca733d02d861412596f6c50d62b206c

Authored by Andrew Kane
1 parent c168c3fa

Faster import for multiple document types

Showing 1 changed file with 8 additions and 16 deletions   Show diff stats
lib/searchkick/index.rb
... ... @@ -45,12 +45,7 @@ module Searchkick
45 45 # record based
46 46  
47 47 def store(record)
48   - client.index(
49   - index: name,
50   - type: document_type(record),
51   - id: search_id(record),
52   - body: search_data(record)
53   - )
  48 + import([record])
54 49 end
55 50  
56 51 def remove(record)
... ... @@ -65,16 +60,13 @@ module Searchkick
65 60 end
66 61  
67 62 def import(records)
68   - records.group_by { |r| document_type(r) }.each do |type, batch|
69   - response =
70   - client.bulk(
71   - index: name,
72   - type: type,
73   - body: batch.map { |r| {index: {_id: search_id(r), data: search_data(r)}} }
74   - )
75   - if response["errors"]
76   - raise Searchkick::ImportError, response["items"].first["index"]["error"]
77   - end
  63 + response =
  64 + client.bulk(
  65 + index: name,
  66 + body: records.map { |r| {index: {_id: search_id(r), _type: document_type(r), data: search_data(r)}} }
  67 + )
  68 + if response["errors"]
  69 + raise Searchkick::ImportError, response["items"].first["index"]["error"]
78 70 end
79 71 end
80 72  
... ...