Class: ElasticsearchDslBuilder::DSL::Search::Search
- Inherits:
-
Object
- Object
- ElasticsearchDslBuilder::DSL::Search::Search
- Defined in:
- lib/elasticsearch_dsl_builder/dsl/search.rb
Instance Method Summary collapse
- #aggregation(name, aggregation) ⇒ Object
- #exclude_fields(*fields) ⇒ Object
- #from(value) ⇒ Object
- #include_fields(*fields) ⇒ Object
-
#query(query) ⇒ self, Query
DSL method for building or accessing the ‘query` part of a search definition.
- #search_after(*values) ⇒ Object
- #size(value) ⇒ Object
- #sort_by(name, direction = nil) ⇒ Object
- #to_hash ⇒ Object
Instance Method Details
#aggregation(name, aggregation) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 15 def aggregation(name, aggregation) name_valid = name.instance_of?(String) || name.instance_of?(Symbol) raise ArgumentError, 'name must be a String or Symbol' unless name_valid raise ArgumentError, 'aggregation must extend Aggregation' unless aggregation.is_a?(Aggregations::Aggregation) @aggregations ||= Aggregations::AggregationsCollection.new @aggregations[name.to_sym] = aggregation self end |
#exclude_fields(*fields) ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 58 def exclude_fields(*fields) fields = fields.flatten fields_valid = !fields.empty? && fields.all? { |f| f.instance_of?(String) } raise ArgumentError, 'must pass at least 1 String field' unless fields_valid @excluded_fields ||= [] @excluded_fields.concat fields self end |
#from(value) ⇒ Object
37 38 39 40 41 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 37 def from(value) raise ArgumentError, 'value must be Numeric' unless value.is_a? Numeric @from = value self end |
#include_fields(*fields) ⇒ Object
49 50 51 52 53 54 55 56 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 49 def include_fields(*fields) fields = fields.flatten fields_valid = !fields.empty? && fields.all? { |f| f.instance_of?(String) } raise ArgumentError, 'must pass at least 1 String field' unless fields_valid @included_fields ||= [] @included_fields.concat fields self end |
#query(query) ⇒ self, Query
DSL method for building or accessing the ‘query` part of a search definition
8 9 10 11 12 13 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 8 def query(query) raise ArgumentError, 'query must extend type Queries::Query' unless query.is_a?(Queries::Query) @query = query self end |
#search_after(*values) ⇒ Object
43 44 45 46 47 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 43 def search_after(*values) raise ArgumentError, 'must pass at least 1 value' if values.nil? || values.empty? @search_after = values.flatten self end |
#size(value) ⇒ Object
31 32 33 34 35 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 31 def size(value) raise ArgumentError, 'value must be Numeric' unless value.is_a? Numeric @size = value self end |
#sort_by(name, direction = nil) ⇒ Object
25 26 27 28 29 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 25 def sort_by(name, direction = nil) @sort ||= Sort.new @sort.by(name, direction) self end |
#to_hash ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/elasticsearch_dsl_builder/dsl/search.rb', line 67 def to_hash hash = {} hash.update(query: @query.to_hash) if @query hash.update(aggregations: @aggregations.to_hash) if @aggregations hash.update(sort: @sort.to_hash) if @sort hash.update(size: @size) if @size hash.update(from: @from) if @from hash.update(search_after: @search_after) if @search_after unless @included_fields.to_a.empty? && @excluded_fields.to_a.empty? source = {} source.update(includes: @included_fields) unless @included_fields.to_a.empty? source.update(excludes: @excluded_fields) unless @excluded_fields.to_a.empty? hash.update(_source: source) end hash end |