class Elasticsearch::DSL::Search::Search
Wraps the whole search definition (queries, filters, aggregations, sorting, etc)
Attributes
Public Class Methods
# File lib/elasticsearch/dsl/search.rb, line 59 def initialize(*args, &block) @options = Options.new *args @block = block @block.arity < 1 ? self.instance_eval(&@block) : @block.call(self) if @block end
Public Instance Methods
DSL
method for building the `aggregations` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 138 def aggregation(*args, &block) @aggregations ||= AggregationsCollection.new if block @aggregations.update args.first => Aggregation.new(*args, &block) else name = args.shift @aggregations.update name => args.shift end self end
Set the aggregations part of a search definition
# File lib/elasticsearch/dsl/search.rb, line 152 def aggregations=(value) @aggregations = value end
DSL
method for building the `collapse` part of a search definition
@return [self, Collapse]
# File lib/elasticsearch/dsl/search.rb, line 173 def collapse(*args, &block) if !args.empty? || block @collapse = Collapse.new(*args, &block) self else @collapse end end
DSL
method for building the `filter` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 92 def filter(*args, &block) case when block @filter = Filter.new(*args, &block) self when !args.empty? @filter = args.first self else @filter end end
Set the filter part of a search definition
# File lib/elasticsearch/dsl/search.rb, line 107 def filter=(value) filter value end
DSL
method for building the `from` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 231 def from(value=nil) if value @from = value self else @from end end
DSL
method for building the `highlight` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 160 def highlight(*args, &block) if !args.empty? || block @highlight = Highlight.new(*args, &block) self else @highlight end end
Delegates to the methods provided by the {Options} class
# File lib/elasticsearch/dsl/search.rb, line 263 def method_missing(name, *args, &block) if @options.respond_to? name @options.__send__ name, *args, &block self elsif @block @block.binding.eval('self').send(name, *args, &block) else super end end
DSL
method for building the `post_filter` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 115 def post_filter(*args, &block) case when block @post_filter = Filter.new(*args, &block) self when !args.empty? @post_filter = args.first self else @post_filter end end
Set the post_filter
part of a search definition
# File lib/elasticsearch/dsl/search.rb, line 130 def post_filter=(value) post_filter value end
DSL
method for building or accessing the `query` part of a search definition
@return [self, {Query}]
# File lib/elasticsearch/dsl/search.rb, line 69 def query(*args, &block) case when block @query = Query.new(*args, &block) self when !args.empty? @query = args.first self else @query end end
Set the query part of a search definition
# File lib/elasticsearch/dsl/search.rb, line 84 def query=(value) query value end
DSL
method for building the `size` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 218 def size(value=nil) if value @size = value self else @size end end
DSL
method for building the `sort` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 186 def sort(*args, &block) if !args.empty? || block @sort = Sort.new(*args, &block) self else @sort end end
Set the sort part of a search definition
# File lib/elasticsearch/dsl/search.rb, line 197 def sort=(value) @sort = value end
DSL
method for building the `stored_fields` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 205 def stored_fields(value=nil) if value @stored_fields = value self else @stored_fields end end
DSL
method for building the `suggest` part of a search definition
@return [self]
# File lib/elasticsearch/dsl/search.rb, line 244 def suggest(*args, &block) if !args.empty? || block @suggest ||= {} key, options = args @suggest.update key => Suggest.new(key, options, &block) self else @suggest end end
Set the suggest part of a search definition
# File lib/elasticsearch/dsl/search.rb, line 257 def suggest=(value) @suggest = value end
Converts the search definition to a Hash
@return [Hash]
# File lib/elasticsearch/dsl/search.rb, line 278 def to_hash hash = {} hash.update(query: @query.to_hash) if @query hash.update(filter: @filter.to_hash) if @filter hash.update(post_filter: @post_filter.to_hash) if @post_filter hash.update(aggregations: @aggregations.reduce({}) { |sum,item| sum.update item.first => item.last.to_hash }) if @aggregations hash.update(sort: @sort.to_hash) if @sort hash.update(size: @size) if @size hash.update(stored_fields: @stored_fields) if @stored_fields hash.update(from: @from) if @from hash.update(suggest: @suggest.reduce({}) { |sum,item| sum.update item.last.to_hash }) if @suggest hash.update(highlight: @highlight.to_hash) if @highlight hash.update(collapse: @collapse.to_hash) if @collapse hash.update(@options) unless @options.empty? hash end