class Elastic::Nodes::Term

Constants

BOOLEAN_MODE

Attributes

field[RW]
mode[RW]

Public Instance Methods

clone() click to toggle source
# File lib/elastic/nodes/term.rb, line 26
def clone
  prepare_clone(super)
end
mode=(_value) click to toggle source
# File lib/elastic/nodes/term.rb, line 14
def mode=(_value)
  if !_value.nil? && !BOOLEAN_MODE.include?(_value)
    raise ArgumentError, "invalid mode #{_value}"
  end

  @mode = _value
end
render(_options = {}) click to toggle source
# File lib/elastic/nodes/term.rb, line 34
def render(_options = {})
  raise ArgumentError, "terms not provided for #{@field}" if !@terms

  if @terms.length == 1
    { 'term' => { render_field(_options) => render_boost('value' => @terms.first) } }
  elsif @mode == :all && !@terms.empty?
    {
      'bool' => render_boost(
        'must' => @terms.map { |t| { 'term' => { render_field(_options) => t } } }
      )
    }
  else
    { 'terms' => render_boost(render_field(_options) => @terms) }
  end
end
simplify() click to toggle source
# File lib/elastic/nodes/term.rb, line 30
def simplify
  prepare_clone(super)
end
terms() click to toggle source
# File lib/elastic/nodes/term.rb, line 22
def terms
  @terms.each
end
terms=(_terms) click to toggle source
# File lib/elastic/nodes/term.rb, line 10
def terms=(_terms)
  @terms = _terms.dup.to_a
end

Private Instance Methods

prepare_clone(_clone) click to toggle source
# File lib/elastic/nodes/term.rb, line 52
def prepare_clone(_clone)
  _clone.field = @field
  _clone.terms = @terms
  _clone.mode = @mode
  _clone
end