Class: Elasticsearch::DSL::Search::Filters::Not

Inherits:
Object
  • Object
show all
Includes:
BaseComponent
Defined in:
lib/elasticsearch/dsl/search/filters/not.rb

Overview

Note:

Since ‘not` is a keyword in Ruby, use the `_not` method in DSL definitions

A filter which takes out documents matching a filter from the results

Examples:

Pass the filter as a Hash

search do
  query do
    filtered do
      filter do
        _not term: { color: 'red' }
      end
    end
  end
end

Define the filter with a block


search do
  query do
    filtered do
      filter do
        _not do
          term color: 'red'
        end
      end
    end
  end
end

See Also:

Instance Method Summary collapse

Methods included from BaseComponent

included, #initialize

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object

Looks up the corresponding class for a method being invoked, and initializes it

Raises:

  • (NoMethodError)

    When the corresponding class cannot be found



48
49
50
51
52
53
54
55
56
57
# File 'lib/elasticsearch/dsl/search/filters/not.rb', line 48

def method_missing(name, *args, &block)
  klass = Utils.__camelize(name)
  if Filters.const_defined? klass
    @value = Filters.const_get(klass).new(*args, &block)
  elsif @block
    @block.binding.eval('self').send(name, *args, &block)
  else
    super
  end
end

Instance Method Details

#to_hash(options = {}) ⇒ Hash

Convert the component to a Hash

A default implementation, DSL classes can overload it.

Returns:

  • (Hash)


65
66
67
68
69
70
71
72
73
74
# File 'lib/elasticsearch/dsl/search/filters/not.rb', line 65

def to_hash(options={})
  case
  when (! @value || @value.empty?) && ! @block
    @hash = super
  when @block
    call
    @hash = { name.to_sym => @value.to_hash }
  end
  @hash
end