module Stretchie

Defaults

Constants

VERSION

Public Class Methods

add_model(model) click to toggle source

Add a model to the set

# File lib/stretchie.rb, line 21
def self.add_model model
  @@models << model
end
delete_indices(*args) click to toggle source

Delete all indices across all registered models

# File lib/stretchie.rb, line 87
def self.delete_indices(*args)
  result = true

  if args.length > 0
    args = args.map { |m| m.to_s.singularize.capitalize.constantize }
    _models = models.select { |m| args.include? m }
  else
    _models = models
  end

  _models.map do |m|
    delete = m.__elasticsearch__.delete_index!

    if !delete.nil?
      result &= delete['acknowledged']
    end
  end

  result
end
models() click to toggle source

Returns a set containing all registered models

# File lib/stretchie.rb, line 27
def self.models
  @@models
end
refresh_indices(*args) click to toggle source

Refresh all indices across all registered models

# File lib/stretchie.rb, line 65
def self.refresh_indices(*args)
  result = true

  if args.length > 0
    args = args.map { |m| m.to_s.singularize.capitalize.constantize }
    _models = models.select { |m| args.include? m }
  else
    _models = models
  end

  _models.map do |m|
    refresh = m.__elasticsearch__.refresh_index!
    if refresh.kind_of?(Hash) && refresh.include?('_shards')
      result &= refresh['_shards']['failed'] == 0
    end
  end

  result
end
update_indices(*args) click to toggle source

Create or update all indices across all registered models

# File lib/stretchie.rb, line 33
def self.update_indices(*args)
  result = true

  if args.length > 0
    args = args.map { |m| m.to_s.singularize.capitalize.constantize }
    _models = models.select { |m| args.include? m }
  else
    _models = models
  end

  _models.map do |m|
    create = m.__elasticsearch__.create_index!
    if !create.nil?
      result &= create['acknowledged']
    else
      m.mappings.to_hash.map do |map, body|
        client = m.__elasticsearch__.client
        update = client.indices.put_mapping index: m.index_name, type: map,
          body: {map => body}

        if update.kind_of?(Hash)
          result &= update['acknowledged']
        end
      end
    end
  end

  result
end