logstash-filter-elasticsearch 3.9.3 → 3.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 886cfa121f2af1a9efdcfff9f3f2e97be3456be2aecbb668b89d3517d8087ffc
4
- data.tar.gz: 0f0a568d1bf012cd0845a6d9cb5782a6460a32332a493790b84f010e68c06fcd
3
+ metadata.gz: 3264c43657eea13f942de4c005f0996dfc30e845cf7643fe374ec6918d400d83
4
+ data.tar.gz: bfdb2268299b87ed893d778411c450c1758977cd2e2e3c051e0679aa9467fd37
5
5
  SHA512:
6
- metadata.gz: 3e15a05bd9d013a2145ce983b2699f94c619276d93a675d49695ef8b8cf1d48ef88e6dfb4edac975d11a85bc57c0e769566b35ec44b8b2776fca8e35300af65d
7
- data.tar.gz: 667279291114a2a93cbbd211e6ec7ff7533eada83dbfc73377d0a67b759ae773e7787f9b1a11518e9101302653cf5b8b356936a211521f9f635cc58646826730
6
+ metadata.gz: 759cb7f87175ac2894adc715e108399fd6d27af1cae91fdf91bd05aa5312678e9963fde3c36a25519b6eac3b53a326ed203583a1f22a94fdd66239014ddf2433
7
+ data.tar.gz: 5dda79137366f9d40d1fddf21b6eb92da6377187eb470d3e725b1cfb338bd1e2f2296263e67fec7f10bf7b9a4d611bcca243d393235727ffef200264da5ef4c9
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 3.9.4
2
+ - Fix: a regression (in LS 7.14.0) where due the elasticsearch client update (from 5.0.5 to 7.5.0) the `Authorization`
3
+ header isn't passed, this leads to the plugin not being able to leverage `user`/`password` credentials set by the user.
4
+ [#148](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/148)
5
+ - Fix: default setting for `hosts` not working (since 3.7.0) GH-147
6
+ - Fix: mutating @hosts variable which leads to issues with multiple worker threads GH-129
7
+
1
8
  ## 3.9.3
2
9
  - [DOC] Update links to use shared attributes [#144](https://github.com/logstash-plugins/logstash-filter-elasticsearch/pull/144)
3
10
 
@@ -1,19 +1,15 @@
1
1
  # encoding: utf-8
2
2
  require "logstash/filters/base"
3
3
  require "logstash/namespace"
4
- require_relative "elasticsearch/client"
5
4
  require "logstash/json"
6
- require "logstash/util/safe_uri"
7
- java_import "java.util.concurrent.ConcurrentHashMap"
8
-
5
+ require_relative "elasticsearch/client"
6
+ require_relative "elasticsearch/patches/_elasticsearch_transport_http_manticore"
9
7
 
10
8
  class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
11
9
  config_name "elasticsearch"
12
10
 
13
- DEFAULT_HOST = ::LogStash::Util::SafeURI.new("//localhost:9200")
14
-
15
11
  # List of elasticsearch hosts to use for querying.
16
- config :hosts, :validate => :array, :default => [ DEFAULT_HOST ]
12
+ config :hosts, :validate => :array, :default => [ 'localhost:9200' ]
17
13
 
18
14
  # Comma-delimited list of index names to search; use `_all` or empty string to perform the operation on all indices.
19
15
  # Field substitution (e.g. `index-name-%{date_field}`) is available
@@ -112,7 +108,7 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
112
108
  fill_user_password_from_cloud_auth
113
109
  fill_hosts_from_cloud_id
114
110
 
115
- @hosts = Array(@hosts).map { |host| host.to_s } # for ES client URI#to_s
111
+ @hosts = Array(@hosts).map { |host| host.to_s } # potential SafeURI#to_s
116
112
 
117
113
  test_connection!
118
114
  end # def register
@@ -120,7 +116,7 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
120
116
  def filter(event)
121
117
  matched = false
122
118
  begin
123
- params = {:index => event.sprintf(@index) }
119
+ params = { :index => event.sprintf(@index) }
124
120
 
125
121
  if @query_dsl
126
122
  query = LogStash::Json.load(event.sprintf(@query_dsl))
@@ -237,8 +233,7 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
237
233
  end
238
234
 
239
235
  def hosts_default?(hosts)
240
- # NOTE: would be nice if pipeline allowed us a clean way to detect a config default :
241
- hosts.is_a?(Array) && hosts.size == 1 && hosts.first.equal?(DEFAULT_HOST)
236
+ hosts.is_a?(Array) && hosts.size == 1 && !original_params.key?('hosts')
242
237
  end
243
238
 
244
239
  def validate_authentication
@@ -273,6 +268,7 @@ class LogStash::Filters::Elasticsearch < LogStash::Filters::Base
273
268
  end
274
269
 
275
270
  def parse_host_uri_from_cloud_id(cloud_id)
271
+ require 'logstash/util/safe_uri'
276
272
  begin # might not be available on older LS
277
273
  require 'logstash/util/cloud_setting_id'
278
274
  rescue LoadError
@@ -24,7 +24,7 @@ module LogStash
24
24
  logger.warn "Supplied proxy setting (proxy => '') has no effect" if @proxy.eql?('')
25
25
  transport_options[:proxy] = proxy.to_s if proxy && !proxy.eql?('')
26
26
 
27
- hosts.map! {|h| { host: h, scheme: 'https' } } if ssl
27
+ hosts = hosts.map { |host| { host: host, scheme: 'https' } } if ssl
28
28
  # set ca_file even if ssl isn't on, since the host can be an https url
29
29
  ssl_options = { ssl: true, ca_file: options[:ca_file] } if options[:ca_file]
30
30
  ssl_options ||= {}
@@ -43,14 +43,14 @@ module LogStash
43
43
  return {} unless user && password && password.value
44
44
 
45
45
  token = ::Base64.strict_encode64("#{user}:#{password.value}")
46
- { Authorization: "Basic #{token}" }
46
+ { 'Authorization' => "Basic #{token}" }
47
47
  end
48
48
 
49
49
  def setup_api_key(api_key)
50
50
  return {} unless (api_key && api_key.value)
51
51
 
52
52
  token = ::Base64.strict_encode64(api_key.value)
53
- { Authorization: "ApiKey #{token}" }
53
+ { 'Authorization' => "ApiKey #{token}" }
54
54
  end
55
55
  end
56
56
  end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ require "elasticsearch"
3
+ require "elasticsearch/transport/transport/http/manticore"
4
+
5
+ es_client_version = Gem.loaded_specs['elasticsearch-transport'].version
6
+ if es_client_version >= Gem::Version.new('7.2') && es_client_version < Gem::Version.new('7.16')
7
+ # elasticsearch-transport 7.2.0 - 7.14.0 had a bug where setting http headers
8
+ # ES::Client.new ..., transport_options: { headers: { 'Authorization' => ... } }
9
+ # would be lost https://github.com/elastic/elasticsearch-ruby/issues/1428
10
+ #
11
+ # NOTE: needs to be idempotent as input ES plugin might apply the same patch!
12
+ #
13
+ # @private
14
+ module Elasticsearch
15
+ module Transport
16
+ module Transport
17
+ module HTTP
18
+ class Manticore
19
+
20
+ def apply_headers(request_options, options)
21
+ headers = (options && options[:headers]) || {}
22
+ headers[CONTENT_TYPE_STR] = find_value(headers, CONTENT_TYPE_REGEX) || DEFAULT_CONTENT_TYPE
23
+ headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || user_agent_header
24
+ headers[ACCEPT_ENCODING] = GZIP if use_compression?
25
+ (request_options[:headers] ||= {}).merge!(headers) # this line was changed
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-filter-elasticsearch'
4
- s.version = '3.9.3'
4
+ s.version = '3.9.4'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Copies fields from previous log events in Elasticsearch to current events "
7
7
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
 
22
22
  # Gem dependencies
23
23
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
24
- s.add_runtime_dependency 'elasticsearch', ">= 5.0.3"
24
+ s.add_runtime_dependency 'elasticsearch', ">= 5.0.5" # LS >= 6.7 and < 7.14 all used version 5.0.5
25
25
  s.add_runtime_dependency 'manticore', "~> 0.6"
26
26
 
27
27
  s.add_development_dependency 'logstash-devutils'
data/spec/es_helper.rb CHANGED
@@ -7,8 +7,12 @@ module ESHelper
7
7
  end
8
8
  end
9
9
 
10
- def self.get_client
11
- Elasticsearch::Client.new(:hosts => [get_host_port])
10
+ def self.get_client(credentials)
11
+ require 'elasticsearch/transport/transport/http/faraday' # supports user/password options
12
+ host, port = get_host_port.split(':')
13
+ host_opts = credentials.inject({}) { |h, (k, v)| h[k.to_sym] = v; h } # user: _, password: _
14
+ host_opts.merge! host: host, port: port, scheme: 'http'
15
+ Elasticsearch::Client.new(hosts: [host_opts], transport_class: Elasticsearch::Transport::Transport::HTTP::Faraday)
12
16
  end
13
17
 
14
18
  def self.doc_type
@@ -313,12 +313,12 @@ describe LogStash::Filters::Elasticsearch do
313
313
  'sample:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJGFjMzFlYmI5MDI0MTc3MzE1NzA0M2MzNGZkMjZmZDQ2OjkyNDMkYTRjMDYyMzBlNDhjOGZjZTdiZTg4YTA3NGEzYmIzZTA6OTI0NA=='
314
314
  end
315
315
 
316
- let(:config) { super.merge({ 'cloud_id' => valid_cloud_id }) }
316
+ let(:config) { super().merge({ 'cloud_id' => valid_cloud_id }) }
317
317
 
318
318
  it "should set host(s)" do
319
319
  plugin.register
320
320
  client = plugin.send(:get_client).client
321
- expect( client.transport.hosts ).to eql [{
321
+ expect( extract_transport(client).hosts ).to eql [{
322
322
  :scheme => "https",
323
323
  :host => "ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io",
324
324
  :port => 9243,
@@ -328,7 +328,7 @@ describe LogStash::Filters::Elasticsearch do
328
328
  end
329
329
 
330
330
  context 'invalid' do
331
- let(:config) { super.merge({ 'cloud_id' => 'invalid:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlv' }) }
331
+ let(:config) { super().merge({ 'cloud_id' => 'invalid:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlv' }) }
332
332
 
333
333
  it "should fail" do
334
334
  expect { plugin.register }.to raise_error LogStash::ConfigurationError, /cloud_id.*? is invalid/
@@ -336,7 +336,7 @@ describe LogStash::Filters::Elasticsearch do
336
336
  end
337
337
 
338
338
  context 'hosts also set' do
339
- let(:config) { super.merge({ 'cloud_id' => valid_cloud_id, 'hosts' => [ 'localhost:9200' ] }) }
339
+ let(:config) { super().merge({ 'cloud_id' => valid_cloud_id, 'hosts' => [ 'localhost:9200' ] }) }
340
340
 
341
341
  it "should fail" do
342
342
  expect { plugin.register }.to raise_error LogStash::ConfigurationError, /cloud_id and hosts/
@@ -345,18 +345,18 @@ describe LogStash::Filters::Elasticsearch do
345
345
  end if LOGSTASH_VERSION > '6.0'
346
346
 
347
347
  describe "cloud.auth" do
348
- let(:config) { super.merge({ 'cloud_auth' => LogStash::Util::Password.new('elastic:my-passwd-00') }) }
348
+ let(:config) { super().merge({ 'cloud_auth' => LogStash::Util::Password.new('elastic:my-passwd-00') }) }
349
349
 
350
350
  it "should set authorization" do
351
351
  plugin.register
352
352
  client = plugin.send(:get_client).client
353
- auth_header = client.transport.options[:transport_options][:headers][:Authorization]
353
+ auth_header = extract_transport(client).options[:transport_options][:headers]['Authorization']
354
354
 
355
355
  expect( auth_header ).to eql "Basic #{Base64.encode64('elastic:my-passwd-00').rstrip}"
356
356
  end
357
357
 
358
358
  context 'invalid' do
359
- let(:config) { super.merge({ 'cloud_auth' => 'invalid-format' }) }
359
+ let(:config) { super().merge({ 'cloud_auth' => 'invalid-format' }) }
360
360
 
361
361
  it "should fail" do
362
362
  expect { plugin.register }.to raise_error LogStash::ConfigurationError, /cloud_auth.*? format/
@@ -364,7 +364,7 @@ describe LogStash::Filters::Elasticsearch do
364
364
  end
365
365
 
366
366
  context 'user also set' do
367
- let(:config) { super.merge({ 'cloud_auth' => 'elastic:my-passwd-00', 'user' => 'another' }) }
367
+ let(:config) { super().merge({ 'cloud_auth' => 'elastic:my-passwd-00', 'user' => 'another' }) }
368
368
 
369
369
  it "should fail" do
370
370
  expect { plugin.register }.to raise_error LogStash::ConfigurationError, /Multiple authentication options are specified/
@@ -374,7 +374,7 @@ describe LogStash::Filters::Elasticsearch do
374
374
 
375
375
  describe "api_key" do
376
376
  context "without ssl" do
377
- let(:config) { super.merge({ 'api_key' => LogStash::Util::Password.new('foo:bar') }) }
377
+ let(:config) { super().merge({ 'api_key' => LogStash::Util::Password.new('foo:bar') }) }
378
378
 
379
379
  it "should fail" do
380
380
  expect { plugin.register }.to raise_error LogStash::ConfigurationError, /api_key authentication requires SSL\/TLS/
@@ -382,18 +382,18 @@ describe LogStash::Filters::Elasticsearch do
382
382
  end
383
383
 
384
384
  context "with ssl" do
385
- let(:config) { super.merge({ 'api_key' => LogStash::Util::Password.new('foo:bar'), "ssl" => true }) }
385
+ let(:config) { super().merge({ 'api_key' => LogStash::Util::Password.new('foo:bar'), "ssl" => true }) }
386
386
 
387
387
  it "should set authorization" do
388
388
  plugin.register
389
389
  client = plugin.send(:get_client).client
390
- auth_header = client.transport.options[:transport_options][:headers][:Authorization]
390
+ auth_header = extract_transport(client).options[:transport_options][:headers]['Authorization']
391
391
 
392
392
  expect( auth_header ).to eql "ApiKey #{Base64.strict_encode64('foo:bar')}"
393
393
  end
394
394
 
395
395
  context 'user also set' do
396
- let(:config) { super.merge({ 'api_key' => 'foo:bar', 'user' => 'another' }) }
396
+ let(:config) { super().merge({ 'api_key' => 'foo:bar', 'user' => 'another' }) }
397
397
 
398
398
  it "should fail" do
399
399
  expect { plugin.register }.to raise_error LogStash::ConfigurationError, /Multiple authentication options are specified/
@@ -404,30 +404,44 @@ describe LogStash::Filters::Elasticsearch do
404
404
 
405
405
  describe "proxy" do
406
406
  context 'valid' do
407
- let(:config) { super.merge({ 'proxy' => 'http://localhost:1234' }) }
407
+ let(:config) { super().merge({ 'proxy' => 'http://localhost:1234' }) }
408
408
 
409
409
  it "should set proxy" do
410
410
  plugin.register
411
411
  client = plugin.send(:get_client).client
412
- proxy = client.transport.options[:transport_options][:proxy]
412
+ proxy = extract_transport(client).options[:transport_options][:proxy]
413
413
 
414
414
  expect( proxy ).to eql "http://localhost:1234"
415
415
  end
416
416
  end
417
417
 
418
418
  context 'invalid' do
419
- let(:config) { super.merge({ 'proxy' => '${A_MISSING_ENV_VAR:}' }) }
419
+ let(:config) { super().merge({ 'proxy' => '${A_MISSING_ENV_VAR:}' }) }
420
420
 
421
421
  it "should not set proxy" do
422
422
  plugin.register
423
423
  client = plugin.send(:get_client).client
424
424
 
425
- expect( client.transport.options[:transport_options] ).to_not include(:proxy)
425
+ expect( extract_transport(client).options[:transport_options] ).to_not include(:proxy)
426
426
  end
427
427
  end
428
428
  end
429
429
  end
430
430
 
431
+ describe "defaults" do
432
+
433
+ let(:config) { Hash.new }
434
+ let(:plugin) { described_class.new(config) }
435
+
436
+ before { allow(plugin).to receive(:test_connection!) }
437
+
438
+ it "should set localhost:9200 as hosts" do
439
+ plugin.register
440
+ client = plugin.send(:get_client).client
441
+ expect( extract_transport(client).hosts ).to eql [{ :host => "localhost", :port => 9200, :protocol => "http"}]
442
+ end
443
+ end
444
+
431
445
  describe "query template" do
432
446
  let(:config) do
433
447
  {
@@ -453,4 +467,10 @@ describe LogStash::Filters::Elasticsearch do
453
467
  plugin.filter(LogStash::Event.new)
454
468
  end
455
469
  end
470
+
471
+ # @note can be removed once gem depends on elasticsearch >= 6.x
472
+ def extract_transport(client) # on 7.x client.transport is a ES::Transport::Client
473
+ client.transport.respond_to?(:transport) ? client.transport.transport : client.transport
474
+ end
475
+
456
476
  end
@@ -6,21 +6,31 @@ require_relative "../../../spec/es_helper"
6
6
 
7
7
  describe LogStash::Filters::Elasticsearch, :integration => true do
8
8
 
9
+ ELASTIC_SECURITY_ENABLED = ENV['ELASTIC_SECURITY_ENABLED'].eql? 'true'
9
10
 
10
- let(:config) do
11
+ let(:base_config) do
11
12
  {
12
- "index" => 'logs',
13
- "hosts" => [ESHelper.get_host_port],
14
- "query" => "response: 404",
15
- "sort" => "response",
16
- "fields" => [ ["response", "code"] ],
13
+ "index" => 'logs',
14
+ "hosts" => [ESHelper.get_host_port],
15
+ "query" => "response: 404",
16
+ "sort" => "response",
17
+ "fields" => [ ["response", "code"] ],
17
18
  }
18
19
  end
20
+
21
+ let(:credentials) do
22
+ { 'user' => 'elastic', 'password' => ENV['ELASTIC_PASSWORD'] }
23
+ end
24
+
25
+ let(:config) do
26
+ ELASTIC_SECURITY_ENABLED ? base_config.merge(credentials) : base_config
27
+ end
28
+
19
29
  let(:plugin) { described_class.new(config) }
20
30
  let(:event) { LogStash::Event.new({}) }
21
31
 
22
32
  before(:each) do
23
- @es = ESHelper.get_client
33
+ @es = ESHelper.get_client(ELASTIC_SECURITY_ENABLED ? credentials : {})
24
34
  # Delete all templates first.
25
35
  # Clean ES of data before we start.
26
36
  @es.indices.delete_template(:name => "*")
@@ -30,11 +40,10 @@ describe LogStash::Filters::Elasticsearch, :integration => true do
30
40
  ESHelper.index_doc(@es, :index => 'logs', :body => { :response => 404, :this => 'that'})
31
41
  end
32
42
  @es.indices.refresh
33
-
34
- plugin.register
35
43
  end
36
44
 
37
45
  it "should enhance the current event with new data" do
46
+ plugin.register
38
47
  plugin.filter(event)
39
48
  expect(event.get('code')).to eq(404)
40
49
  end
@@ -42,20 +51,28 @@ describe LogStash::Filters::Elasticsearch, :integration => true do
42
51
  context "when retrieving a list of elements" do
43
52
 
44
53
  let(:config) do
45
- {
46
- "index" => 'logs',
47
- "hosts" => [ESHelper.get_host_port],
48
- "query" => "response: 404",
49
- "fields" => [ ["response", "code"] ],
50
- "sort" => "response",
51
- "result_size" => 10
52
- }
54
+ super().merge("fields" => [ ["response", "code"] ], "result_size" => 10)
53
55
  end
54
56
 
57
+ before { plugin.register }
58
+
55
59
  it "should enhance the current event with new data" do
56
60
  plugin.filter(event)
57
61
  expect(event.get("code")).to eq([404]*10)
58
62
  end
59
63
 
60
64
  end
65
+
66
+ context "incorrect auth credentials" do
67
+
68
+ let(:config) do
69
+ super().reject { |key, _| key == 'password' }
70
+ end
71
+
72
+ it "should enhance the current event with new data" do
73
+ expect { plugin.register }.to raise_error Elasticsearch::Transport::Transport::Errors::Unauthorized
74
+ end
75
+
76
+ end if ELASTIC_SECURITY_ENABLED
77
+
61
78
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-filter-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.3
4
+ version: 3.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-26 00:00:00.000000000 Z
11
+ date: 2021-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -20,8 +20,8 @@ dependencies:
20
20
  - !ruby/object:Gem::Version
21
21
  version: '2.99'
22
22
  name: logstash-core-plugin-api
23
- prerelease: false
24
23
  type: :runtime
24
+ prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
@@ -35,15 +35,15 @@ dependencies:
35
35
  requirements:
36
36
  - - ">="
37
37
  - !ruby/object:Gem::Version
38
- version: 5.0.3
38
+ version: 5.0.5
39
39
  name: elasticsearch
40
- prerelease: false
41
40
  type: :runtime
41
+ prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 5.0.3
46
+ version: 5.0.5
47
47
  - !ruby/object:Gem::Dependency
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
@@ -51,8 +51,8 @@ dependencies:
51
51
  - !ruby/object:Gem::Version
52
52
  version: '0.6'
53
53
  name: manticore
54
- prerelease: false
55
54
  type: :runtime
55
+ prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
@@ -65,8 +65,8 @@ dependencies:
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  name: logstash-devutils
68
- prerelease: false
69
68
  type: :development
69
+ prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
@@ -89,6 +89,7 @@ files:
89
89
  - docs/index.asciidoc
90
90
  - lib/logstash/filters/elasticsearch.rb
91
91
  - lib/logstash/filters/elasticsearch/client.rb
92
+ - lib/logstash/filters/elasticsearch/patches/_elasticsearch_transport_http_manticore.rb
92
93
  - logstash-filter-elasticsearch.gemspec
93
94
  - spec/es_helper.rb
94
95
  - spec/filters/elasticsearch_spec.rb
@@ -121,8 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
122
  - !ruby/object:Gem::Version
122
123
  version: '0'
123
124
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.6.13
125
+ rubygems_version: 3.0.6
126
126
  signing_key:
127
127
  specification_version: 4
128
128
  summary: Copies fields from previous log events in Elasticsearch to current events