Method: Elasticsearch::Model::Indexing::ClassMethods#settings

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

#settings(settings = {}, &block) ⇒ Object

Define settings for the index

You can read settings from any object that responds to :read as long as its return value can be parsed as either YAML or JSON.

Examples:

Define index settings


Article.settings(index: { number_of_shards: 1 })

Article.settings.to_hash

# => {:index=>{:number_of_shards=>1}}

Define index settings from YAML file


# config/elasticsearch/articles.yml:
#
# index:
#   number_of_shards: 1
#

Article.settings File.open("config/elasticsearch/articles.yml")

Article.settings.to_hash

# => { "index" => { "number_of_shards" => 1 } }

Define index settings from JSON file


# config/elasticsearch/articles.json:
#
# { "index": { "number_of_shards": 1 } }
#

Article.settings File.open("config/elasticsearch/articles.json")

Article.settings.to_hash

# => { "index" => { "number_of_shards" => 1 } }
[View source]

199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/elasticsearch/model/indexing.rb', line 199

def settings(settings={}, &block)
  settings = YAML.load(settings.read) if settings.respond_to?(:read)
  @settings ||= Settings.new(settings)

  @settings.settings.update(settings) unless settings.empty?

  if block_given?
    self.instance_eval(&block)
    return self
  else
    @settings
  end
end