module Searchkick
Constants
- VERSION
Attributes
aws_credentials[R]
client[W]
client_options[RW]
env[W]
index_prefix[RW]
index_suffix[RW]
model_options[RW]
models[RW]
queue_name[RW]
redis[RW]
search_method_name[RW]
search_timeout[W]
timeout[RW]
wordnet_path[RW]
Public Class Methods
aws_credentials=(creds)
click to toggle source
# File lib/searchkick.rb, line 161 def self.aws_credentials=(creds) begin require "faraday_middleware/aws_signers_v4" rescue LoadError require "faraday_middleware/aws_sigv4" end @aws_credentials = creds @client = nil # reset client end
callbacks(value) { || ... }
click to toggle source
# File lib/searchkick.rb, line 145 def self.callbacks(value) if block_given? previous_value = callbacks_value begin self.callbacks_value = value result = yield indexer.perform if callbacks_value == :bulk result ensure self.callbacks_value = previous_value end else self.callbacks_value = value end end
callbacks?(default: true)
click to toggle source
# File lib/searchkick.rb, line 137 def self.callbacks?(default: true) if callbacks_value.nil? default else callbacks_value != false end end
callbacks_value()
click to toggle source
private
# File lib/searchkick.rb, line 222 def self.callbacks_value Thread.current[:searchkick_callbacks_enabled] end
callbacks_value=(value)
click to toggle source
private
# File lib/searchkick.rb, line 227 def self.callbacks_value=(value) Thread.current[:searchkick_callbacks_enabled] = value end
client()
click to toggle source
# File lib/searchkick.rb, line 70 def self.client @client ||= begin require "typhoeus/adapters/faraday" if defined?(Typhoeus) Elasticsearch::Client.new({ url: ENV["ELASTICSEARCH_URL"], transport_options: {request: {timeout: timeout}, headers: {content_type: "application/json"}}, retry_on_failure: 2 }.deep_merge(client_options)) do |f| f.use Searchkick::Middleware f.request signer_middleware_key, signer_middleware_aws_params if aws_credentials end end end
disable_callbacks()
click to toggle source
# File lib/searchkick.rb, line 133 def self.disable_callbacks self.callbacks_value = false end
enable_callbacks()
click to toggle source
callbacks
# File lib/searchkick.rb, line 129 def self.enable_callbacks self.callbacks_value = nil end
env()
click to toggle source
# File lib/searchkick.rb, line 85 def self.env @env ||= ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development" end
indexer()
click to toggle source
private
# File lib/searchkick.rb, line 217 def self.indexer Thread.current[:searchkick_indexer] ||= Searchkick::Indexer.new end
load_records(records, ids)
click to toggle source
private
# File lib/searchkick.rb, line 196 def self.load_records(records, ids) records = if records.respond_to?(:primary_key) # ActiveRecord records.where(records.primary_key => ids) if records.primary_key elsif records.respond_to?(:queryable) # Mongoid 3+ records.queryable.for_ids(ids) elsif records.respond_to?(:unscoped) && :id.respond_to?(:in) # Nobrainer records.unscoped.where(:id.in => ids) elsif records.respond_to?(:key_column_names) records.where(records.key_column_names.first => ids) end raise Searchkick::Error, "Not sure how to load records" if !records records end
multi_search(queries)
click to toggle source
# File lib/searchkick.rb, line 123 def self.multi_search(queries) Searchkick::MultiSearch.new(queries).perform end
reindex_status(index_name)
click to toggle source
# File lib/searchkick.rb, line 171 def self.reindex_status(index_name) if redis batches_left = Searchkick::Index.new(index_name).batches_left { completed: batches_left == 0, batches_left: batches_left } else raise Searchkick::Error, "Redis not configured" end end
search(term = "*", model: nil, **options, &block)
click to toggle source
# File lib/searchkick.rb, line 101 def self.search(term = "*", model: nil, **options, &block) options = options.dup klass = model # make Searchkick.search(index_name: [Product]) and Product.search equivalent unless klass index_name = Array(options[:index_name]) if index_name.size == 1 && index_name.first.respond_to?(:searchkick_index) klass = index_name.first options.delete(:index_name) end end query = Searchkick::Query.new(klass, 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 89 def self.search_timeout @search_timeout || timeout end
server_below?(version)
click to toggle source
# File lib/searchkick.rb, line 97 def self.server_below?(version) Gem::Version.new(server_version.split("-")[0]) < Gem::Version.new(version.split("-")[0]) end
server_version()
click to toggle source
# File lib/searchkick.rb, line 93 def self.server_version @server_version ||= client.info["version"]["number"] end
signer_middleware_aws_params()
click to toggle source
private
# File lib/searchkick.rb, line 237 def self.signer_middleware_aws_params if signer_middleware_key == :aws_sigv4 {service: "es", region: "us-east-1"}.merge(aws_credentials) else { credentials: aws_credentials[:credentials] || Aws::Credentials.new(aws_credentials[:access_key_id], aws_credentials[:secret_access_key]), service_name: "es", region: aws_credentials[:region] || "us-east-1" } end end
signer_middleware_key()
click to toggle source
private
# File lib/searchkick.rb, line 232 def self.signer_middleware_key defined?(FaradayMiddleware::AwsSignersV4) ? :aws_signers_v4 : :aws_sigv4 end
with_redis() { |r| ... }
click to toggle source
# File lib/searchkick.rb, line 183 def self.with_redis if redis if redis.respond_to?(:with) redis.with do |r| yield r end else yield redis end end end
Public Instance Methods
locale()
click to toggle source
# File lib/searchkick/bulk_reindex_job.rb, line 24 def locale return "en" end