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