Class: ElasticsearchDslBuilder::DSL::Search::Aggregations::Filters

Inherits:
Aggregation
  • Object
show all
Defined in:
lib/elasticsearch_dsl_builder/dsl/search/aggregations/filters.rb

Instance Method Summary collapse

Methods inherited from Aggregation

#aggregation

Constructor Details

#initializeFilters

Returns a new instance of Filters.



6
7
8
9
# File 'lib/elasticsearch_dsl_builder/dsl/search/aggregations/filters.rb', line 6

def initialize
  @type = :filters
  super()
end

Instance Method Details

#filter(query, name = nil) ⇒ Object

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/elasticsearch_dsl_builder/dsl/search/aggregations/filters.rb', line 11

def filter(query, name = nil)
  raise ArgumentError, 'query must extend type Queries::Query' unless query.is_a?(Queries::Query)

  if name.nil?
    # Adding an anonymous filter
    raise ArgumentError, 'this aggregation already contains named filters. cannot mix' if @filters.instance_of?(Hash)
    @filters ||= []
    @filters << query
  else
    # Adding named filter
    raise ArgumentError, 'this aggregation already contains anonymous filters. cannot mix' if @filters.instance_of?(Array)
    name_valid = name.instance_of?(String) || name.instance_of?(Symbol)
    raise ArgumentError, 'name must be a String or Symbol' unless name_valid
    @filters ||= {}
    @filters[name.to_sym] = query
  end
  self
end

#to_hashObject

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
# File 'lib/elasticsearch_dsl_builder/dsl/search/aggregations/filters.rb', line 30

def to_hash
  raise ArgumentError, 'no filters were added' if @filters.nil?

  filters = @filters.instance_of?(Hash) ? @filters.map { |k, v| [k, v.to_hash] }.to_h : @filters.map(&:to_hash)
  @aggregation = { filters: filters }
  super
end