Class: LogStash::Filters::ElasticsearchClient
- Inherits:
-
Object
- Object
- LogStash::Filters::ElasticsearchClient
- Defined in:
- lib/logstash/filters/elasticsearch/client.rb
Constant Summary collapse
- BUILD_FLAVOR_SERVERLESS =
'serverless'.freeze
- DEFAULT_EAV_HEADER =
{ "Elastic-Api-Version" => "2023-10-31" }.freeze
- INTERNAL_ORIGIN_HEADER =
{ 'x-elastic-product-origin' => 'logstash-filter-elasticsearch'}.freeze
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
Instance Method Summary collapse
- #build_flavor ⇒ Object
- #info ⇒ Object
-
#initialize(logger, hosts, options = {}) ⇒ ElasticsearchClient
constructor
A new instance of ElasticsearchClient.
- #search(params = {}) ⇒ Object
- #serverless? ⇒ Boolean
Constructor Details
#initialize(logger, hosts, options = {}) ⇒ ElasticsearchClient
Returns a new instance of ElasticsearchClient.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/logstash/filters/elasticsearch/client.rb', line 17 def initialize(logger, hosts, = {}) user = .fetch(:user, nil) password = .fetch(:password, nil) api_key = .fetch(:api_key, nil) proxy = .fetch(:proxy, nil) user_agent = [:user_agent] = { } [:headers] = .fetch(:serverless, false) ? DEFAULT_EAV_HEADER.dup : {} [:headers].merge!(setup_basic_auth(user, password)) [:headers].merge!(setup_api_key(api_key)) [:headers].merge!({ 'user-agent' => "#{user_agent}" }) [:headers].merge!(INTERNAL_ORIGIN_HEADER) [:pool_max] = 1000 [:pool_max_per_route] = 100 logger.warn "Supplied proxy setting (proxy => '') has no effect" if @proxy.eql?('') [:proxy] = proxy.to_s if proxy && !proxy.eql?('') = .fetch(:ssl, { :enabled => false }) ssl_enabled = .fetch(:enabled, false) hosts = setup_hosts(hosts, ssl_enabled) = { hosts: hosts, transport_class: ::Elasticsearch::Transport::Transport::HTTP::Manticore, transport_options: , ssl: , retry_on_failure: [:retry_on_failure], retry_on_status: [:retry_on_status] } logger.info("New ElasticSearch filter client", :hosts => hosts) @client = ::Elasticsearch::Client.new() end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
11 12 13 |
# File 'lib/logstash/filters/elasticsearch/client.rb', line 11 def client @client end |
Instance Method Details
#build_flavor ⇒ Object
63 64 65 |
# File 'lib/logstash/filters/elasticsearch/client.rb', line 63 def build_flavor @build_flavor ||= info&.dig('version', 'build_flavor') end |
#info ⇒ Object
59 60 61 |
# File 'lib/logstash/filters/elasticsearch/client.rb', line 59 def info @client.info end |
#search(params = {}) ⇒ Object
55 56 57 |
# File 'lib/logstash/filters/elasticsearch/client.rb', line 55 def search(params={}) @client.search(params) end |
#serverless? ⇒ Boolean
67 68 69 |
# File 'lib/logstash/filters/elasticsearch/client.rb', line 67 def serverless? @is_serverless ||= (build_flavor == BUILD_FLAVOR_SERVERLESS) end |