Module: Elasticsearch::Model::Importing::ClassMethods
- Defined in:
- lib/elasticsearch/model/importing.rb
Instance Method Summary collapse
- #__batch_to_bulk(batch, transform) ⇒ Object
-
#import(options = {}, &block) {|Hash| ... } ⇒ Fixnum
Import all model records into the index.
Instance Method Details
#__batch_to_bulk(batch, transform) ⇒ Object
111 112 113 |
# File 'lib/elasticsearch/model/importing.rb', line 111 def __batch_to_bulk(batch, transform) batch.map { |model| transform.call(model) } end |
#import(options = {}, &block) {|Hash| ... } ⇒ Fixnum
Import all model records into the index
The method will pick up correct strategy based on the ‘Importing` module defined in the corresponding adapter.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/elasticsearch/model/importing.rb', line 79 def import(={}, &block) errors = 0 refresh = .delete(:refresh) || false target_index = .delete(:index) || index_name target_type = .delete(:type) || document_type transform = .delete(:transform) || __transform unless transform.respond_to?(:call) raise ArgumentError, "Pass an object responding to `call` as the :transport option, #{transform.class} given" end if .delete(:force) self.create_index! force: true, index: target_index end __find_in_batches() do |batch| response = client.bulk \ index: target_index, type: target_type, body: __batch_to_bulk(batch, transform) yield response if block_given? errors += response['items'].map { |k, v| k.values.first['error'] }.compact.length end self.refresh_index! if refresh return errors end |