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