Method: Ej::Core#bulk

Defined in:
lib/ej/core.rb

#bulk(timestamp_key, type, add_timestamp, id_keys, index, data) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/ej/core.rb', line 132

def bulk(timestamp_key, type, add_timestamp, id_keys, index, data)
  template = id_keys.map { |key| '%s' }.join('_') unless id_keys.nil?
  bulk_message = []
  data.each do |record|
    if timestamp_key.nil?
      timestamp = Time.now.to_datetime.to_s
    else
      timestamp = record[timestamp_key].to_time.to_datetime.to_s
    end
    record.merge!('@timestamp' => timestamp) if add_timestamp
    meta = { index: { _index: index, _type: type } }
    meta[:index][:_id] = Util.generate_id(template, record, id_keys) unless id_keys.nil?
    bulk_message << meta
    bulk_message << record
  end
  connect_with_retry { @client.bulk body: bulk_message unless bulk_message.empty? }
end