Method: Elastic::Core::Connector#rollover

Defined in:
lib/elastic/core/connector.rb

#rollover(&_block) ⇒ Object

rubocop:disable Metrics/MethodLength



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/elastic/core/connector.rb', line 114

def rollover(&_block) # rubocop:disable Metrics/MethodLength
  actual_index, rolling_index = resolve_write_indices

  unless rolling_index.nil?
    raise Elastic::RolloverError, 'rollover process already in progress'
  end

  new_index = create_index_w_mapping

  begin
    transfer_alias(write_index_alias, to: new_index)
    wait_for_index_to_stabilize
    perform_optimized_write_on(new_index, &_block)
    transfer_alias(index_name, from: actual_index, to: new_index)
    transfer_alias(write_index_alias, from: actual_index)
    wait_for_index_to_stabilize
    api.indices.delete index: actual_index
  rescue StandardError
    api.indices.delete index: new_index
    raise
  end
end