class Elasticsearch::DSL::Search::Filters::Not

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

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

@example Pass the filter as a Hash

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

@example 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 www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-not-filter.html

Public Instance Methods

method_missing(name, *args, &block) click to toggle source

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

@raise [NoMethodError] When the corresponding class cannot be found

Calls superclass method
# 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
to_hash(options={}) click to toggle source

Convert the component to a Hash

A default implementation, DSL classes can overload it.

@return [Hash]

Calls superclass method
# 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