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
json()
click to toggle source
def json
@json || (perform; @json)
end
logged(endpoint='_search')
click to toggle source
def logged(endpoint='_search')
if Configuration.logger
Configuration.logger.log_request endpoint, indices, to_curl
took = @json['took'] rescue nil
code = @response.code rescue nil
if Configuration.logger.level.to_s == 'debug'
body = if @json
MultiJson.encode( @json, :pretty => Configuration.pretty)
else
MultiJson.encode( MultiJson.load(@response.body), :pretty => Configuration.pretty) rescue ''
end
else
body = ''
end
Configuration.logger.log_response code || 'N/A', took || 'N/A', body || 'N/A'
end
end
min_score(value)
click to toggle source
def min_score(value)
@min_score = value
self
end
params()
click to toggle source
def params
options = @options.except(:wrapper, :payload, :load)
options.empty? ? '' : '?' + options.to_param
end
partial_field(name, options)
click to toggle source
def partial_field(name, options)
@partial_fields ||= {}
@partial_fields[name] = options
end
response()
click to toggle source
def response
@response || (perform; @response)
end
results()
click to toggle source
def results
@results || (perform; @results)
end
script_field(name, options={})
click to toggle source
def script_field(name, options={})
@script_fields ||= {}
@script_fields.merge! ScriptField.new(name, options).to_hash
self
end
set_indices_options(indices)
click to toggle source
def set_indices_options(indices)
indices.each do |index, index_options|
if index_options[:boost]
@indices_boost ||= {}
@indices_boost[index] = index_options[:boost]
end
end
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
suggest(name, &block)
click to toggle source
def suggest(name, &block)
@suggest ||= {}
@suggest.update Tire::Suggest::Suggestion.new(name, &block).to_hash
self
end
to_curl()
click to toggle source
def to_curl
to_json_escaped = to_json.gsub("'",'\u0027')
%Qcurl -X GET '#{url}#{params.empty? ? '?' : params.to_s + '&'}pretty' -d '#{to_json_escaped}'|
end
to_hash()
click to toggle source
def to_hash
@options[:payload] || begin
request = {}
request.update( { :indices_boost => @indices_boost } ) if @indices_boost
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( { :suggest => @suggest.to_hash } ) if @suggest
request.update( { :size => @size } ) if @size
request.update( { :from => @from } ) if @from
request.update( { :fields => @fields } ) if @fields
request.update( { :partial_fields => @partial_fields } ) if @partial_fields
request.update( { :script_fields => @script_fields } ) if @script_fields
request.update( { :version => @version } ) if @version
request.update( { :explain => @explain } ) if @explain
request.update( { :min_score => @min_score } ) if @min_score
request.update( { :track_scores => @track_scores } ) if @track_scores
request
end
end
to_json(options={})
click to toggle source
def to_json(options={})
payload = to_hash
if payload.is_a?(String)
payload
else
MultiJson.encode(payload, :pretty => Configuration.pretty)
end
end
track_scores(value)
click to toggle source
def track_scores(value)
@track_scores = value
self
end
url()
click to toggle source
def url
Configuration.url + @path
end
version(value)
click to toggle source
def version(value)
@version = value
self
end