Method: Elasticsearch::Model::Indexing::ClassMethods#create_index!

Defined in:
lib/elasticsearch/model/indexing.rb

#create_index!(options = {}) ⇒ Object

Creates an index with correct name, automatically passing ‘settings` and `mappings` defined in the model

Examples:

Create an index for the ‘Article` model


Article.__elasticsearch__.create_index!

Forcefully create (delete first) an index for the ‘Article` model


Article.__elasticsearch__.create_index! force: true

Pass a specific index name


Article.__elasticsearch__.create_index! index: 'my-index'
[View source]

232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/elasticsearch/model/indexing.rb', line 232

def create_index!(options={})
  options = options.clone

  target_index = options.delete(:index)    || self.index_name
  settings     = options.delete(:settings) || self.settings.to_hash
  mappings     = options.delete(:mappings) || self.mappings.to_hash

  delete_index!(options.merge index: target_index) if options[:force]

  unless index_exists?(index: target_index)
    options.delete(:force)
    self.client.indices.create({ index: target_index,
                                 body: {
                                   settings: settings,
                                   mappings: mappings }
                               }.merge(options))
  end
end