Class: OpenSearch::DSL::Search::Filters::Not

Inherits:
Object
  • Object
show all
Includes:
BaseComponent
Defined in:
lib/opensearch/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



70
71
72
73
74
75
76
77
# File 'lib/opensearch/dsl/search/filters/not.rb', line 70

def method_missing(name, *args, &block)
  klass = Utils.__camelize(name)
  if Filters.const_defined? klass
    @value = Filters.const_get(klass).new(*args, &block)
  else
    raise NoMethodError, "undefined method '#{name}' for #{self}"
  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)


85
86
87
88
89
90
91
92
93
94
# File 'lib/opensearch/dsl/search/filters/not.rb', line 85

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