Method: Elastictastic::BulkPersistenceStrategy#create

Defined in:
lib/elastictastic/bulk_persistence_strategy.rb

#create(instance, params = {}, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/elastictastic/bulk_persistence_strategy.rb', line 14

def create(instance, params = {}, &block)
  block ||= DEFAULT_HANDLER
  if instance.pending_save?
    raise Elastictastic::OperationNotAllowed,
      "Can't re-save transient document with pending save in bulk operation"
  end
  instance.pending_save!
  add(
    instance.index,
    instance.id,
    { 'create' => bulk_identifier_for_instance(instance) },
    instance.elasticsearch_doc
  ) do |response|
    if response['create']['error']
      block.call(ServerError[response['create']['error']])
    else
      instance.id = response['create']['_id']
      instance.version = response['create']['_version']
      instance.persisted!
      block.call
    end
  end
end