Class: ElasticsearchDslBuilder::DSL::Search::Search

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

Instance Method Summary collapse

Instance Method Details

#aggregation(name, aggregation) ⇒ Object

Raises:

  • (ArgumentError)


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

Raises:

  • (ArgumentError)


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

Raises:

  • (ArgumentError)


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

Raises:

  • (ArgumentError)


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

Returns:

  • (self, Query)

Raises:

  • (ArgumentError)


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

Raises:

  • (ArgumentError)


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

Raises:

  • (ArgumentError)


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_hashObject



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