Module: Elasticsearch::Model::Indexing::ClassMethods
- Included in:
- Proxy::ClassMethodsProxy
- Defined in:
- lib/elasticsearch/model/indexing.rb
Instance Method Summary collapse
-
#create_index!(options = {}) ⇒ Object
Creates an index with correct name, automatically passing
settingsandmappingsdefined in the model. -
#delete_index!(options = {}) ⇒ Object
Deletes the index with corresponding name.
-
#index_exists?(options = {}) ⇒ Boolean
Returns true if the index exists.
- #load_settings_from_io(settings) ⇒ Object
-
#mapping(options = {}, &block) ⇒ Object
(also: #mappings)
Defines mappings for the index.
-
#refresh_index!(options = {}) ⇒ Object
Performs the “refresh” operation for the index (useful e.g. in tests).
-
#settings(settings = {}, &block) ⇒ Object
Define settings for the index.
Instance Method Details
#create_index!(options = {}) ⇒ Object
Creates an index with correct name, automatically passing settings and mappings defined in the model
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!(={}) = .clone target_index = .delete(:index) || self.index_name settings = .delete(:settings) || self.settings.to_hash mappings = .delete(:mappings) || self.mappings.to_hash delete_index!(.merge index: target_index) if [:force] unless index_exists?(index: target_index) .delete(:force) self.client.indices.create({ index: target_index, body: { settings: settings, mappings: mappings } }.merge()) end end |
#delete_index!(options = {}) ⇒ Object
Deletes the index with corresponding name
277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
# File 'lib/elasticsearch/model/indexing.rb', line 277 def delete_index!(={}) target_index = .delete(:index) || self.index_name begin self.client.indices.delete index: target_index rescue Exception => e if e.class.to_s =~ /NotFound/ && [:force] client.transport.logger.debug("[!!!] Index does not exist (#{e.class})") if client.transport.logger nil else raise e end end end |
#index_exists?(options = {}) ⇒ Boolean
Returns true if the index exists
261 262 263 264 265 |
# File 'lib/elasticsearch/model/indexing.rb', line 261 def index_exists?(={}) target_index = [:index] || self.index_name self.client.indices.exists(index: target_index, ignore: 404) end |
#load_settings_from_io(settings) ⇒ Object
213 214 215 |
# File 'lib/elasticsearch/model/indexing.rb', line 213 def load_settings_from_io(settings) YAML.load(settings.read) end |
#mapping(options = {}, &block) ⇒ Object Also known as: mappings
Defines mappings for the index
The mappings and settings methods are accessible directly on the model class, when it doesn’t already define them. Use the __elasticsearch__ proxy otherwise.
145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/elasticsearch/model/indexing.rb', line 145 def mapping(={}, &block) @mapping ||= Mappings.new() @mapping..update() unless .empty? if block_given? @mapping.instance_eval(&block) return self else @mapping end end |
#refresh_index!(options = {}) ⇒ Object
Performs the “refresh” operation for the index (useful e.g. in tests)
304 305 306 307 308 309 310 311 312 313 314 315 316 317 |
# File 'lib/elasticsearch/model/indexing.rb', line 304 def refresh_index!(={}) target_index = .delete(:index) || self.index_name begin self.client.indices.refresh index: target_index rescue Exception => e if e.class.to_s =~ /NotFound/ && [:force] client.transport.logger.debug("[!!!] Index does not exist (#{e.class})") if client.transport.logger nil else raise e end end end |
#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.
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 |