Class: Elasticity::IndexConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/elasticity/index_config.rb

Constant Summary collapse

ATTRS =
[
  :index_base_name, :document_type, :mapping, :strategy, :subclasses,
  :settings
].freeze
VALIDATABLE_ATTRS =
[:index_base_name, :document_type, :strategy].freeze

Instance Method Summary collapse

Constructor Details

#initialize(elasticity_config, defaults = {}) {|_self| ... } ⇒ IndexConfig

Returns a new instance of IndexConfig.

Yields:

  • (_self)

Yield Parameters:



11
12
13
14
15
16
17
18
# File 'lib/elasticity/index_config.rb', line 11

def initialize(elasticity_config, defaults = {})
  defaults.each do |k,v|
    instance_variable_set("@#{k}",v)
  end
  @elasticity_config = elasticity_config
  yield(self)
  validate!
end

Instance Method Details

#clientObject



26
27
28
# File 'lib/elasticity/index_config.rb', line 26

def client
  @elasticity_config.client
end

#definitionObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/elasticity/index_config.rb', line 30

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_typesObject



41
42
43
# File 'lib/elasticity/index_config.rb', line 41

def document_types
  @document_types ||= definition[:mappings].collect { |doc_type, mapping| doc_type }
end

#fq_index_base_nameObject



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/elasticity/index_config.rb', line 45

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) ⇒ Object



20
21
22
23
24
# File 'lib/elasticity/index_config.rb', line 20

def segment(name)
  new_config = self.dup
  new_config.index_base_name = "#{index_base_name}_#{name.underscore}"
  new_config
end

#strategyObject



57
58
59
# File 'lib/elasticity/index_config.rb', line 57

def strategy
  @strategy ||= Strategies::AliasIndex
end