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



61
62
63
64
65
66
67
68
69
70
# File 'lib/elasticsearch/dsl/search/filters/not.rb', line 61

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)


78
79
80
81
82
83
84
85
86
87
# File 'lib/elasticsearch/dsl/search/filters/not.rb', line 78

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