Sha256: 97e0fee3750d2cb4c9be507ee629ed85b03c514844b294f150efaaaa9a4328d6
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
module Elasticity class IndexConfig ATTRS = [ :index_base_name, :document_type, :mapping, :strategy, :subclasses, :settings ].freeze VALIDATABLE_ATTRS = [:index_base_name, :document_type, :strategy].freeze attr_accessor *ATTRS def initialize(elasticity_config, defaults = {}) defaults.each do |k,v| instance_variable_set("@#{k}",v) end @elasticity_config = elasticity_config yield(self) validate! end def segment(name) new_config = self.dup new_config.index_base_name = "#{index_base_name}_#{name.underscore}" new_config end def client @elasticity_config.client end def definition return @definition if defined?(@definition) @definition = { settings: merge_settings, mappings: { @document_type => @mapping || {} } } subclasses.each do |doc_type, subclass| @definition[:mappings][doc_type] = subclass.constantize.mapping end if subclasses.present? @definition end def document_types @document_types ||= definition[:mappings].collect { |doc_type, mapping| doc_type } end 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 def strategy @strategy ||= Strategies::AliasIndex end private def validate! VALIDATABLE_ATTRS.each do |attr| raise "#{attr} is not set" if public_send(attr).nil? end end def merge_settings @elasticity_config.settings.merge(settings || {}) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
es-elasticity-0.9.0 | lib/elasticity/index_config.rb |