Class: Elastic::Nodes::Term

Inherits:
Base
  • Object
show all
Includes:
Concerns::Boostable, Concerns::FieldQuery
Defined in:
lib/elastic/nodes/term.rb

Constant Summary collapse

BOOLEAN_MODE =
[:any, :all]

Instance Attribute Summary collapse

Attributes included from Concerns::Boostable

#boost

Instance Method Summary collapse

Methods included from Concerns::FieldQuery

#render_field

Methods inherited from Base

#==, #handle_result, #traverse

Methods included from Support::Traversable

#pick_nodes, #traverse

Instance Attribute Details

#fieldObject

Returns the value of attribute field.



8
9
10
# File 'lib/elastic/nodes/term.rb', line 8

def field
  @field
end

#modeObject

Returns the value of attribute mode.



8
9
10
# File 'lib/elastic/nodes/term.rb', line 8

def mode
  @mode
end

Instance Method Details

#cloneObject



26
27
28
# File 'lib/elastic/nodes/term.rb', line 26

def clone
  prepare_clone(super)
end

#render(_options = {}) ⇒ Object

Raises:

  • (ArgumentError)


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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

#simplifyObject



30
31
32
# File 'lib/elastic/nodes/term.rb', line 30

def simplify
  prepare_clone(super)
end

#termsObject



22
23
24
# File 'lib/elastic/nodes/term.rb', line 22

def terms
  @terms.each
end

#terms=(_terms) ⇒ Object



10
11
12
# File 'lib/elastic/nodes/term.rb', line 10

def terms=(_terms)
  @terms = _terms.dup.to_a
end