module Searchkick
Constants
- VERSION
Attributes
client[W]
env[W]
models[RW]
search_method_name[RW]
search_timeout[W]
timeout[RW]
wordnet_path[RW]
Public Class Methods
callbacks(value) { || ... }
click to toggle source
# File lib/searchkick.rb, line 77 def self.callbacks(value) if block_given? previous_value = callbacks_value begin self.callbacks_value = value yield perform_bulk if callbacks_value == :bulk ensure self.callbacks_value = previous_value end else self.callbacks_value = value end end
callbacks?()
click to toggle source
# File lib/searchkick.rb, line 73 def self.callbacks? Thread.current[:searchkick_callbacks_enabled].nil? || Thread.current[:searchkick_callbacks_enabled] end
callbacks_value()
click to toggle source
private
# File lib/searchkick.rb, line 127 def self.callbacks_value Thread.current[:searchkick_callbacks_enabled] end
callbacks_value=(value)
click to toggle source
private
# File lib/searchkick.rb, line 132 def self.callbacks_value=(value) Thread.current[:searchkick_callbacks_enabled] = value end
clear_queued_items()
click to toggle source
private
# File lib/searchkick.rb, line 122 def self.clear_queued_items Thread.current[:searchkick_queued_items] = [] end
client()
click to toggle source
# File lib/searchkick.rb, line 39 def self.client @client ||= Elasticsearch::Client.new( url: ENV["ELASTICSEARCH_URL"], transport_options: {request: {timeout: timeout}} ) do |f| f.use Searchkick::Middleware end end
disable_callbacks()
click to toggle source
# File lib/searchkick.rb, line 69 def self.disable_callbacks self.callbacks_value = false end
enable_callbacks()
click to toggle source
# File lib/searchkick.rb, line 65 def self.enable_callbacks self.callbacks_value = nil end
env()
click to toggle source
# File lib/searchkick.rb, line 49 def self.env @env ||= ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development" end
multi_search(queries)
click to toggle source
# File lib/searchkick.rb, line 146 def self.multi_search(queries) if queries.any? responses = client.msearch(body: queries.flat_map { |q| [q.params.except(:body), q.body] })["responses"] queries.each_with_index do |query, i| query.handle_response(responses[i]) end end nil end
perform_bulk()
click to toggle source
private
# File lib/searchkick.rb, line 99 def self.perform_bulk items = queued_items clear_queued_items perform_items(items) end
perform_items(items)
click to toggle source
private
# File lib/searchkick.rb, line 106 def self.perform_items(items) if items.any? response = client.bulk(body: items) if response["errors"] first_item = response["items"].first raise Searchkick::ImportError, (first_item["index"] || first_item["delete"])["error"] end end end
queue_items(items)
click to toggle source
private
# File lib/searchkick.rb, line 93 def self.queue_items(items) queued_items.concat(items) perform_bulk unless callbacks_value == :bulk end
queued_items()
click to toggle source
private
# File lib/searchkick.rb, line 117 def self.queued_items Thread.current[:searchkick_queued_items] ||= [] end
search(term = nil, options = {}, &block)
click to toggle source
# File lib/searchkick.rb, line 136 def self.search(term = nil, options = {}, &block) query = Searchkick::Query.new(nil, term, options) block.call(query.body) if block if options[:execute] == false query else query.execute end end
search_timeout()
click to toggle source
# File lib/searchkick.rb, line 53 def self.search_timeout @search_timeout || timeout end
server_below?(version)
click to toggle source
# File lib/searchkick.rb, line 61 def self.server_below?(version) Gem::Version.new(server_version.sub("-", ".")) < Gem::Version.new(version.sub("-", ".")) end
server_version()
click to toggle source
# File lib/searchkick.rb, line 57 def self.server_version @server_version ||= client.info["version"]["number"] end