facet(name, options={}, &block)
click to toggle source
def facet(name, options={}, &block)
@facets ||= {}
@facets.update Facet.new(name, options, &block).to_hash
self
end
fields(*fields)
click to toggle source
def fields(*fields)
@fields = Array(fields.flatten)
self
end
filter(type, *options)
click to toggle source
def filter(type, *options)
@filters ||= []
@filters << Filter.new(type, *options).to_hash
self
end
from(value)
click to toggle source
def from(value)
@from = value
@options[:from] = value
self
end
highlight(*args)
click to toggle source
def highlight(*args)
unless args.empty?
@highlight = Highlight.new(*args)
self
else
@highlight
end
end
logged(error=nil)
click to toggle source
def logged(error=nil)
if Configuration.logger
Configuration.logger.log_request '_search', indices, to_curl
took = @json['took'] rescue nil
code = @response.code rescue nil
if Configuration.logger.level.to_s == 'debug'
body = if @json
defined?(Yajl) ? Yajl::Encoder.encode(@json, :pretty => true) : MultiJson.encode(@json)
else
@response.body rescue nil
end
else
body = ''
end
Configuration.logger.log_response code || 'N/A', took || 'N/A', body || 'N/A'
end
end
response()
click to toggle source
def response
@response || (perform; @response)
end
results()
click to toggle source
def results
@results || (perform; @results)
end
size(value)
click to toggle source
def size(value)
@size = value
@options[:size] = value
self
end
sort(&block)
click to toggle source
def sort(&block)
@sort = Sort.new(&block).to_ary
self
end
to_curl()
click to toggle source
def to_curl
%Qcurl -X GET "#{self.url}?pretty=true" -d '#{self.to_json}'|
end
to_hash()
click to toggle source
def to_hash
request = {}
request.update( { :query => @query.to_hash } ) if @query
request.update( { :sort => @sort.to_ary } ) if @sort
request.update( { :facets => @facets.to_hash } ) if @facets
request.update( { :filter => @filters.first.to_hash } ) if @filters && @filters.size == 1
request.update( { :filter => { :and => @filters.map { |filter| filter.to_hash } } } ) if @filters && @filters.size > 1
request.update( { :highlight => @highlight.to_hash } ) if @highlight
request.update( { :size => @size } ) if @size
request.update( { :from => @from } ) if @from
request.update( { :fields => @fields } ) if @fields
request
end
to_json()
click to toggle source
def to_json
to_hash.to_json
end
url()
click to toggle source
def url
Configuration.url + @path
end