class Elasticity::IndexConfig

Constants

ATTRS
SUBCLASSES_ERROR
SUBCLASSES_WARNING
VALIDATABLE_ATTRS
VERSION_FOR_SUBCLASS_ERROR
VERSION_FOR_SUBCLASS_WARNING

Public Class Methods

new(elasticity_config, defaults = {}) { |self| ... } click to toggle source
# File lib/elasticity/index_config.rb, line 19
def initialize(elasticity_config, defaults = {})
  defaults.each do |k,v|
    instance_variable_set("@#{k}",v)
  end
  @elasticity_config = elasticity_config
  yield(self)
  subclasses_warning_or_exception
  validate!
end

Public Instance Methods

client() click to toggle source
# File lib/elasticity/index_config.rb, line 35
def client
  @elasticity_config.client
end
definition() click to toggle source
# File lib/elasticity/index_config.rb, line 39
def definition
  return @definition if defined?(@definition)
  @definition = {
    settings: merge_settings,
    mappings: { @document_type => @mapping.nil? ? {} : @mapping.deep_stringify_keys }
  }
  subclasses.each do |doc_type, subclass|
    @definition[:mappings][doc_type] = subclass.constantize.mapping
  end if subclasses.present?
  @definition
end
document_types() click to toggle source
# File lib/elasticity/index_config.rb, line 51
def document_types
  @document_types ||= definition[:mappings].collect { |doc_type, mapping| doc_type }
end
fq_index_base_name() click to toggle source
# File lib/elasticity/index_config.rb, line 55
def fq_index_base_name
  return @fq_index_base_name if defined?(@fq_index_base_name)

  if namespace = @elasticity_config.namespace
    @fq_index_base_name = "#{namespace}_#{@index_base_name}"
  else
    @fq_index_base_name = @index_base_name
  end

  @fq_index_base_name
end
segment(name) click to toggle source
# File lib/elasticity/index_config.rb, line 29
def segment(name)
  new_config = self.dup
  new_config.index_base_name = "#{index_base_name}_#{name.underscore}"
  new_config
end
strategy() click to toggle source
# File lib/elasticity/index_config.rb, line 67
def strategy
  @strategy ||= Strategies::AliasIndex
end

Private Instance Methods

es_version_meets_or_exceeds?(test_version) click to toggle source
# File lib/elasticity/index_config.rb, line 89
def es_version_meets_or_exceeds?(test_version)
  client.versions.any?{ |v| v >= test_version }
end
merge_settings() click to toggle source
# File lib/elasticity/index_config.rb, line 79
def merge_settings
  @elasticity_config.settings.merge(settings || {})
end
subclasses_warning_or_exception() click to toggle source
# File lib/elasticity/index_config.rb, line 83
def subclasses_warning_or_exception
  return if subclasses.nil? || subclasses.empty?
  raise(SubclassError.new(SUBCLASSES_ERROR)) if es_version_meets_or_exceeds?(VERSION_FOR_SUBCLASS_ERROR)
  warn(SUBCLASSES_WARNING) if es_version_meets_or_exceeds?(VERSION_FOR_SUBCLASS_WARNING)
end
validate!() click to toggle source
# File lib/elasticity/index_config.rb, line 73
def validate!
  VALIDATABLE_ATTRS.each do |attr|
    raise "#{attr} is not set" if public_send(attr).nil?
  end
end