Class: Elasticsearch::Transport::Client
- Inherits:
-
Object
- Object
- Elasticsearch::Transport::Client
- Defined in:
- lib/elasticsearch/transport/client.rb
Overview
Handles communication with an Elasticsearch cluster.
See README for usage and code examples.
Constant Summary collapse
- DEFAULT_TRANSPORT_CLASS =
Transport::HTTP::Faraday
- DEFAULT_LOGGER =
lambda do require 'logger' logger = Logger.new(STDERR) logger.progname = 'elasticsearch' logger.formatter = proc { |severity, datetime, progname, msg| "#{datetime}: #{msg}\n" } logger end
- DEFAULT_TRACER =
lambda do require 'logger' logger = Logger.new(STDERR) logger.progname = 'elasticsearch.tracer' logger.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" } logger end
Instance Attribute Summary collapse
-
#transport ⇒ Object
Returns the transport object.
Instance Method Summary collapse
-
#__extract_hosts(hosts_config = nil, options = {}) ⇒ Array<Hash>
private
Normalizes and returns hosts configuration.
-
#initialize(arguments = {}) ⇒ Client
constructor
Create a client connected to an Elasticsearch cluster.
-
#perform_request(method, path, params = {}, body = nil) ⇒ Object
Performs a request through delegation to #transport.
Constructor Details
#initialize(arguments = {}) ⇒ Client
Create a client connected to an Elasticsearch cluster.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/elasticsearch/transport/client.rb', line 73 def initialize(arguments={}) transport_class = arguments[:transport_class] || DEFAULT_TRANSPORT_CLASS hosts = arguments[:hosts] || arguments[:host] || arguments[:url] arguments[:logger] ||= arguments[:log] ? DEFAULT_LOGGER.call() : nil arguments[:tracer] ||= arguments[:trace] ? DEFAULT_TRACER.call() : nil arguments[:reload_connections] ||= false arguments[:retry_on_failure] ||= false arguments[:reload_on_failure] ||= false arguments[:randomize_hosts] ||= false arguments[:transport_options] ||= {} @transport = arguments[:transport] || \ transport_class.new(:hosts => __extract_hosts(hosts, arguments), :options => arguments) end |
Instance Attribute Details
#transport ⇒ Object
Returns the transport object.
32 33 34 |
# File 'lib/elasticsearch/transport/client.rb', line 32 def transport @transport end |
Instance Method Details
#__extract_hosts(hosts_config = nil, options = {}) ⇒ Array<Hash>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Normalizes and returns hosts configuration.
Arrayifies the ‘hosts_config` argument and extracts `host` and `port` info from strings. Performs shuffling when the `randomize_hosts` option is set.
TODO: Refactor, so it’s available in Elasticsearch::Transport::Base as well
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/elasticsearch/transport/client.rb', line 107 def __extract_hosts(hosts_config=nil, ={}) hosts_config = hosts_config.nil? ? ['localhost'] : Array(hosts_config) hosts = hosts_config.map do |host| case host when String if host =~ /^[a-z]+\:\/\// uri = URI.parse(host) { :scheme => uri.scheme, :user => uri.user, :password => uri.password, :host => uri.host, :path => uri.path, :port => uri.port.to_s } else host, port = host.split(':') { :host => host, :port => port } end when URI { :scheme => host.scheme, :user => host.user, :password => host.password, :host => host.host, :path => host.path, :port => host.port.to_s } when Hash host else raise ArgumentError, "Please pass host as a String, URI or Hash -- #{host.class} given." end end hosts.shuffle! if [:randomize_hosts] hosts end |
#perform_request(method, path, params = {}, body = nil) ⇒ Object
Performs a request through delegation to #transport.
91 92 93 |
# File 'lib/elasticsearch/transport/client.rb', line 91 def perform_request(method, path, params={}, body=nil) transport.perform_request method, path, params, body end |