class Elastictastic::Field
Public Class Methods
new(field_name, default_options, properties, &block)
click to toggle source
# File lib/elastictastic/field.rb, line 23 def initialize(field_name, default_options, properties, &block) @field_name = field_name @properties = properties if block @properties['type'] = 'multi_field' @properties['fields'] = { field_name.to_s => Field.with_defaults(default_options) } instance_eval(&block) else @properties.merge!(Field.with_defaults(default_options)) end end
process(field_name, default_options, &block)
click to toggle source
# File lib/elastictastic/field.rb, line 5 def self.process(field_name, default_options, &block) {}.tap do |properties| new(field_name, default_options, properties, &block) end end
with_defaults(options)
click to toggle source
# File lib/elastictastic/field.rb, line 11 def self.with_defaults(options) options = Util.deep_stringify(options) if preset = options.delete('preset') options = ::Elastictastic.config.presets[preset].merge(options) end { 'type' => 'string' }.merge(options).tap do |field_properties| if field_properties['type'].to_s == 'date' field_properties['format'] = 'date_time_no_millis' end end end
Public Instance Methods
field(field_name, options = {})
click to toggle source
# File lib/elastictastic/field.rb, line 36 def field(field_name, options = {}) @properties['fields'][field_name.to_s] = Field.with_defaults(options) end