Class: ElasticsearchDslBuilder::DSL::Search::Aggregations::Filters
- Inherits:
-
Aggregation
- Object
- Aggregation
- ElasticsearchDslBuilder::DSL::Search::Aggregations::Filters
- Defined in:
- lib/elasticsearch_dsl_builder/dsl/search/aggregations/filters.rb
Instance Method Summary collapse
- #filter(query, name = nil) ⇒ Object
-
#initialize ⇒ Filters
constructor
A new instance of Filters.
- #to_hash ⇒ Object
Methods inherited from Aggregation
Constructor Details
#initialize ⇒ Filters
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
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_hash ⇒ Object
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 |