class OpenSearch::DSL::Search::Search
Wraps the whole search definition (queries, filters, aggregations, sorting, etc)
Attributes
Public Class Methods
# File lib/opensearch/dsl/search.rb, line 67 def initialize(*args, &block) @options = Options.new *args 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/opensearch/dsl/search.rb, line 145 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/opensearch/dsl/search.rb, line 159 def aggregations=(value) @aggregations = value end
DSL
method for building the ‘filter` part of a search definition
@return [self]
# File lib/opensearch/dsl/search.rb, line 99 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/opensearch/dsl/search.rb, line 114 def filter=(value) filter value end
DSL
method for building the ‘from` part of a search definition
@return [self]
# File lib/opensearch/dsl/search.rb, line 225 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/opensearch/dsl/search.rb, line 167 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/opensearch/dsl/search.rb, line 257 def method_missing(name, *args, &block) if @options.respond_to? name @options.__send__ name, *args, &block self else super end end
DSL
method for building the ‘post_filter` part of a search definition
@return [self]
# File lib/opensearch/dsl/search.rb, line 122 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/opensearch/dsl/search.rb, line 137 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/opensearch/dsl/search.rb, line 76 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/opensearch/dsl/search.rb, line 91 def query=(value) query value end
DSL
method for building the ‘size` part of a search definition
@return [self]
# File lib/opensearch/dsl/search.rb, line 212 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/opensearch/dsl/search.rb, line 180 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/opensearch/dsl/search.rb, line 191 def sort=(value) @sort = value end
DSL
method for building the ‘stored_fields` part of a search definition
@return [self]
# File lib/opensearch/dsl/search.rb, line 199 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/opensearch/dsl/search.rb, line 238 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/opensearch/dsl/search.rb, line 251 def suggest=(value) @suggest = value end
Converts the search definition to a Hash
@return [Hash]
# File lib/opensearch/dsl/search.rb, line 270 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(@options) unless @options.empty? hash end