logstash-output-opensearch 1.2.0-java → 1.3.0-java

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.
@@ -78,7 +78,7 @@ class LogStash::Outputs::OpenSearch < LogStash::Outputs::Base
78
78
  include(LogStash::PluginMixins::OpenSearch::Common)
79
79
 
80
80
  # ecs_compatibility option, provided by Logstash core or the support adapter.
81
- include(LogStash::PluginMixins::ECSCompatibilitySupport)
81
+ include(LogStash::PluginMixins::ECSCompatibilitySupport(:disabled, :v1, :v8))
82
82
 
83
83
  # Generic/API config options that any document indexer output needs
84
84
  include(LogStash::PluginMixins::OpenSearch::APIConfigs)
@@ -419,7 +419,7 @@ class LogStash::Outputs::OpenSearch < LogStash::Outputs::Base
419
419
  when :disabled
420
420
  @default_index = "logstash-%{+yyyy.MM.dd}"
421
421
  @default_template_name = 'logstash'
422
- when :v1
422
+ when :v1, :v8
423
423
  @default_index = "ecs-logstash-%{+yyyy.MM.dd}"
424
424
  @default_template_name = 'ecs-logstash'
425
425
  else
@@ -11,7 +11,7 @@ signing_key_path = "gem-private_key.pem"
11
11
 
12
12
  Gem::Specification.new do |s|
13
13
  s.name = 'logstash-output-opensearch'
14
- s.version = '1.2.0'
14
+ s.version = '1.3.0'
15
15
 
16
16
  s.licenses = ['Apache-2.0']
17
17
  s.summary = "Stores logs in OpenSearch"
@@ -46,10 +46,11 @@ Gem::Specification.new do |s|
46
46
  s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
47
47
  s.add_runtime_dependency 'logstash-mixin-ecs_compatibility_support', '~>1.0'
48
48
  s.add_runtime_dependency 'aws-sdk', '>= 2.11.632', '~> 2'
49
+ s.add_runtime_dependency 'json', '>= 2.3.0', '~> 2'
49
50
 
50
51
  s.add_development_dependency 'logstash-codec-plain'
51
52
  s.add_development_dependency 'logstash-devutils'
52
53
  s.add_development_dependency 'flores'
53
54
  s.add_development_dependency 'cabin', ['~> 0.6']
54
- s.add_development_dependency 'opensearch-ruby'
55
+ s.add_development_dependency 'opensearch-ruby', '~> 1'
55
56
  end
@@ -59,7 +59,13 @@ describe "indexing with http_compression turned on", :integration => true do
59
59
  response = http_client.get("#{index_url}/_search?q=*&size=1000")
60
60
  result = LogStash::Json.load(response.body)
61
61
  result["hits"]["hits"].each do |doc|
62
- expect(doc["_type"]).to eq(type)
62
+ # FIXME This checks for OpenSearch 1.x or OpenDistro which has version 7.10.x
63
+ # need a cleaner way to check this.
64
+ if OpenSearchHelper.check_version?("< 2") || OpenSearchHelper.check_version?("> 7")
65
+ expect(doc["_type"]).to eq(type)
66
+ else
67
+ expect(doc).not_to include("_type")
68
+ end
63
69
  expect(doc["_index"]).to eq(index)
64
70
  end
65
71
  end
@@ -88,7 +88,13 @@ describe "indexing" do
88
88
  response = http_client.get("#{index_url}/_search?q=*&size=1000")
89
89
  result = LogStash::Json.load(response.body)
90
90
  result["hits"]["hits"].each do |doc|
91
- expect(doc["_type"]).to eq(type)
91
+ # FIXME This checks for OpenSearch 1.x or OpenDistro which has version 7.10.x
92
+ # need a cleaner way to check this.
93
+ if OpenSearchHelper.check_version?("< 2") || OpenSearchHelper.check_version?("> 7")
94
+ expect(doc["_type"]).to eq(type)
95
+ else
96
+ expect(doc).not_to include("_type")
97
+ end
92
98
  expect(doc["_index"]).to eq(index)
93
99
  end
94
100
  end
@@ -14,7 +14,8 @@ describe "Ingest pipeline execution behavior", :integration => true do
14
14
  require "logstash/outputs/opensearch"
15
15
  settings = {
16
16
  "hosts" => "#{get_host_port()}",
17
- "pipeline" => "apache-logs"
17
+ "pipeline" => "apache-logs",
18
+ "ecs_compatibility" => "disabled" # specs are tightly tied to non-ECS defaults
18
19
  }
19
20
  next LogStash::Outputs::OpenSearch.new(settings)
20
21
  end
@@ -10,7 +10,7 @@
10
10
  require_relative "../../../spec/opensearch_spec_helper"
11
11
  require "logstash/outputs/opensearch"
12
12
 
13
- context "join field tests", :integration => true do
13
+ context "join field tests", :integration => true && OpenSearchHelper.check_version?("<2") do
14
14
 
15
15
  shared_examples "a join field based parent indexer" do
16
16
  let(:index) { 10.times.collect { rand(10).to_s }.join("") }
@@ -46,7 +46,8 @@ describe "failures in bulk class expected behavior", :integration => true do
46
46
  "template_overwrite" => true,
47
47
  "hosts" => get_host_port(),
48
48
  "retry_max_interval" => 64,
49
- "retry_initial_interval" => 2
49
+ "retry_initial_interval" => 2,
50
+ "ecs_compatibility" => "disabled" # specs are tightly tied to non-ECS defaults
50
51
  }
51
52
  next LogStash::Outputs::OpenSearch.new(settings)
52
53
  end
@@ -10,8 +10,12 @@
10
10
  require_relative "../../../spec/opensearch_spec_helper"
11
11
 
12
12
  describe "index template expected behavior", :integration => true do
13
+ let(:ecs_compatibility) { fail('spec group does not define `ecs_compatibility`!') }
14
+
13
15
  subject! do
14
16
  require "logstash/outputs/opensearch"
17
+ allow_any_instance_of(LogStash::Outputs::OpenSearch).to receive(:ecs_compatibility).and_return(ecs_compatibility)
18
+
15
19
  settings = {
16
20
  "manage_template" => true,
17
21
  "template_overwrite" => true,
@@ -29,75 +33,97 @@ describe "index template expected behavior", :integration => true do
29
33
  # This can fail if there are no indexes, ignore failure.
30
34
  @client.indices.delete(:index => "*") rescue nil
31
35
 
32
- subject.register
33
-
34
- subject.multi_receive([
35
- LogStash::Event.new("message" => "sample message here"),
36
- LogStash::Event.new("somemessage" => { "message" => "sample nested message here" }),
37
- LogStash::Event.new("somevalue" => 100),
38
- LogStash::Event.new("somevalue" => 10),
39
- LogStash::Event.new("somevalue" => 1),
40
- LogStash::Event.new("country" => "us"),
41
- LogStash::Event.new("country" => "at"),
42
- LogStash::Event.new("geoip" => { "location" => [ 0.0, 0.0 ] })
43
- ])
44
-
45
- @client.indices.refresh
46
-
47
- # Wait or fail until everything's indexed.
48
- Stud::try(20.times) do
49
- r = @client.search(index: 'logstash-*')
50
- expect(r).to have_hits(8)
51
- end
52
36
  end
53
37
 
54
- it "permits phrase searching on string fields" do
55
- results = @client.search(:q => "message:\"sample message\"")
56
- expect(results).to have_hits(1)
57
- expect(results["hits"]["hits"][0]["_source"]["message"]).to eq("sample message here")
58
- end
38
+ context 'with ecs_compatibility => disabled' do
39
+ let(:ecs_compatibility) { :disabled }
40
+
41
+ before :each do
42
+ subject.register
43
+
44
+ subject.multi_receive([
45
+ LogStash::Event.new("message" => "sample message here"),
46
+ LogStash::Event.new("somemessage" => { "message" => "sample nested message here" }),
47
+ LogStash::Event.new("somevalue" => 100),
48
+ LogStash::Event.new("somevalue" => 10),
49
+ LogStash::Event.new("somevalue" => 1),
50
+ LogStash::Event.new("country" => "us"),
51
+ LogStash::Event.new("country" => "at"),
52
+ LogStash::Event.new("geoip" => { "location" => [ 0.0, 0.0 ] })
53
+ ])
54
+
55
+ @client.indices.refresh
56
+
57
+ # Wait or fail until everything's indexed.
58
+ Stud::try(20.times) do
59
+ r = @client.search(index: 'logstash-*')
60
+ expect(r).to have_hits(8)
61
+ end
62
+ end
59
63
 
60
- it "numbers dynamically map to a numeric type and permit range queries" do
61
- results = @client.search(:q => "somevalue:[5 TO 105]")
62
- expect(results).to have_hits(2)
64
+ it "permits phrase searching on string fields" do
65
+ results = @client.search(:q => "message:\"sample message\"")
66
+ expect(results).to have_hits(1)
67
+ expect(results["hits"]["hits"][0]["_source"]["message"]).to eq("sample message here")
68
+ end
63
69
 
64
- values = results["hits"]["hits"].collect { |r| r["_source"]["somevalue"] }
65
- expect(values).to include(10)
66
- expect(values).to include(100)
67
- expect(values).to_not include(1)
68
- end
70
+ it "numbers dynamically map to a numeric type and permit range queries" do
71
+ results = @client.search(:q => "somevalue:[5 TO 105]")
72
+ expect(results).to have_hits(2)
69
73
 
70
- it "does not create .keyword field for top-level message field" do
71
- results = @client.search(:q => "message.keyword:\"sample message here\"")
72
- expect(results).to have_hits(0)
73
- end
74
+ values = results["hits"]["hits"].collect { |r| r["_source"]["somevalue"] }
75
+ expect(values).to include(10)
76
+ expect(values).to include(100)
77
+ expect(values).to_not include(1)
78
+ end
74
79
 
75
- it "creates .keyword field for nested message fields" do
76
- results = @client.search(:q => "somemessage.message.keyword:\"sample nested message here\"")
77
- expect(results).to have_hits(1)
78
- end
80
+ it "does not create .keyword field for top-level message field" do
81
+ results = @client.search(:q => "message.keyword:\"sample message here\"")
82
+ expect(results).to have_hits(0)
83
+ end
79
84
 
80
- it "creates .keyword field from any string field which is not_analyzed" do
81
- results = @client.search(:q => "country.keyword:\"us\"")
82
- expect(results).to have_hits(1)
83
- expect(results["hits"]["hits"][0]["_source"]["country"]).to eq("us")
85
+ it "creates .keyword field for nested message fields" do
86
+ results = @client.search(:q => "somemessage.message.keyword:\"sample nested message here\"")
87
+ expect(results).to have_hits(1)
88
+ end
84
89
 
85
- # partial or terms should not work.
86
- results = @client.search(:q => "country.keyword:\"u\"")
87
- expect(results).to have_hits(0)
88
- end
90
+ it "creates .keyword field from any string field which is not_analyzed" do
91
+ results = @client.search(:q => "country.keyword:\"us\"")
92
+ expect(results).to have_hits(1)
93
+ expect(results["hits"]["hits"][0]["_source"]["country"]).to eq("us")
94
+
95
+ # partial or terms should not work.
96
+ results = @client.search(:q => "country.keyword:\"u\"")
97
+ expect(results).to have_hits(0)
98
+ end
99
+
100
+ it "make [geoip][location] a geo_point" do
101
+ expect(field_properties_from_template("logstash", "geoip")["location"]["type"]).to eq("geo_point")
102
+ end
89
103
 
90
- it "make [geoip][location] a geo_point" do
91
- expect(field_properties_from_template("logstash", "geoip")["location"]["type"]).to eq("geo_point")
104
+ it "aggregate .keyword results correctly " do
105
+ results = @client.search(:body => { "aggregations" => { "my_agg" => { "terms" => { "field" => "country.keyword" } } } })["aggregations"]["my_agg"]
106
+ terms = results["buckets"].collect { |b| b["key"] }
107
+
108
+ expect(terms).to include("us")
109
+
110
+ # 'at' is a stopword, make sure stopwords are not ignored.
111
+ expect(terms).to include("at")
112
+ end
92
113
  end
93
114
 
94
- it "aggregate .keyword results correctly " do
95
- results = @client.search(:body => { "aggregations" => { "my_agg" => { "terms" => { "field" => "country.keyword" } } } })["aggregations"]["my_agg"]
96
- terms = results["buckets"].collect { |b| b["key"] }
115
+ context 'with ECS enabled' do
116
+ let(:ecs_compatibility) { :v1 }
97
117
 
98
- expect(terms).to include("us")
118
+ before(:each) do
119
+ subject.register # should load template?
120
+ subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
121
+ end
99
122
 
100
- # 'at' is a stopword, make sure stopwords are not ignored.
101
- expect(terms).to include("at")
123
+ it 'loads the templates' do
124
+ aggregate_failures do
125
+ expect(@client.indices.exists_template(name: 'ecs-logstash')).to be_truthy
126
+ end
127
+ end
102
128
  end
103
129
  end
@@ -49,6 +49,16 @@ module OpenSearchHelper
49
49
  RSpec.configuration.filter[:version]
50
50
  end
51
51
 
52
+ def self.check_version?(*requirement)
53
+ version = self.version
54
+ if version.nil? || version.empty?
55
+ puts "version tag isn't set. Returning false from 'check_version?`."
56
+ return false
57
+ end
58
+ release_version = Gem::Version.new(version).release
59
+ Gem::Requirement.new(requirement).satisfied_by?(release_version)
60
+ end
61
+
52
62
  RSpec::Matchers.define :have_hits do |expected|
53
63
  match do |actual|
54
64
  expected == actual['hits']['total']['value']
@@ -157,7 +157,7 @@ describe LogStash::Outputs::OpenSearch::HttpClient do
157
157
  }
158
158
 
159
159
  it "should call index template" do
160
- expect(subject.pool).to receive(:put).with("_template/#{template_name}", nil, anything).and_return(get_response)
160
+ expect(subject.pool).to receive(:put).with("/_template/#{template_name}", nil, anything).and_return(get_response)
161
161
  subject.template_put(template_name, template)
162
162
  end
163
163
  end
@@ -13,9 +13,28 @@ require "logstash/outputs/opensearch/template_manager"
13
13
  describe LogStash::Outputs::OpenSearch::TemplateManager do
14
14
 
15
15
  describe ".default_template_path" do
16
- context 'when ECS v1 is requested' do
17
- it 'resolves' do
18
- expect(described_class.default_template_path(7, :v1)).to end_with("/templates/ecs-v1/7x.json")
16
+ [1, 2].each do |major_version|
17
+ context "when ECS is disabled with OpenSearch #{major_version}.x" do
18
+ it 'resolves' do
19
+ expect(described_class.default_template_path(major_version)).to end_with("/templates/ecs-disabled/#{major_version}x.json")
20
+ end
21
+ it 'resolves' do
22
+ expect(described_class.default_template_path(major_version, :disabled)).to end_with("/templates/ecs-disabled/#{major_version}x.json")
23
+ end
24
+ end
25
+ end
26
+ [7, 1, 2].each do |major_version|
27
+ context "when ECS v1 is requested with OpenSearch #{major_version}.x" do
28
+ it 'resolves' do
29
+ expect(described_class.default_template_path(major_version, :v1)).to end_with("/templates/ecs-v1/#{major_version}x.json")
30
+ end
31
+ end
32
+ end
33
+ [1, 2].each do |major_version|
34
+ context "when ECS v8 is requested with OpenSearch #{major_version}.x" do
35
+ it 'resolves' do
36
+ expect(described_class.default_template_path(major_version, :v8)).to end_with("/templates/ecs-v8/#{major_version}x.json")
37
+ end
19
38
  end
20
39
  end
21
40
  end
@@ -33,4 +52,4 @@ describe LogStash::Outputs::OpenSearch::TemplateManager do
33
52
  end
34
53
  end
35
54
  end
36
- end
55
+ end
@@ -12,6 +12,7 @@ require "base64"
12
12
  require "flores/random"
13
13
  require 'concurrent/atomic/count_down_latch'
14
14
  require "logstash/outputs/opensearch"
15
+ require 'logstash/plugin_mixins/ecs_compatibility_support/spec_helper'
15
16
 
16
17
  describe LogStash::Outputs::OpenSearch do
17
18
  subject(:opensearch_output_instance) { described_class.new(options) }
@@ -784,6 +785,21 @@ describe LogStash::Outputs::OpenSearch do
784
785
  end
785
786
  end
786
787
 
788
+ describe 'ecs_compatibility support', :ecs_compatibility_support do
789
+ [:disabled, :v1, :v8].each do |ecs_compatibility|
790
+ context "when `ecs_compatibility => #{ecs_compatibility}`" do
791
+ let(:options) { Hash.new }
792
+ subject(:output) { described_class.new(options.merge("ecs_compatibility" => "#{ecs_compatibility}")) }
793
+ context 'when registered' do
794
+ before(:each) { output.register }
795
+ it 'has the correct effective ECS compatibility setting' do
796
+ expect(output.ecs_compatibility).to eq(ecs_compatibility)
797
+ end
798
+ end
799
+ end
800
+ end
801
+ end
802
+
787
803
  @private
788
804
 
789
805
  def stub_manticore_client!(manticore_double = nil)
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-opensearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
@@ -13,7 +13,7 @@ cert_chain:
13
13
  -----BEGIN CERTIFICATE-----
14
14
  MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMRMwEQYDVQQDDApvcGVu
15
15
  c2VhcmNoMRYwFAYKCZImiZPyLGQBGRYGYW1hem9uMRMwEQYKCZImiZPyLGQBGRYD
16
- Y29tMB4XDTIxMDgwMjIxMDQwM1oXDTIyMDgwMjIxMDQwM1owQjETMBEGA1UEAwwK
16
+ Y29tMB4XDTIyMDgxNzE3NTIzNFoXDTIzMDgxNzE3NTIzNFowQjETMBEGA1UEAwwK
17
17
  b3BlbnNlYXJjaDEWMBQGCgmSJomT8ixkARkWBmFtYXpvbjETMBEGCgmSJomT8ixk
18
18
  ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM1z3/jcitjV
19
19
  umXwRFn+JSBBd36qZB54Dtucf6+E2fmNPzBRhgYN5XJy/+clQJ9NIJV7C8H52P3V
@@ -24,14 +24,14 @@ cert_chain:
24
24
  zfR37/NQFkECAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
25
25
  BBYEFJJ2myhLXK742btavNbG0IWrMNBIMCAGA1UdEQQZMBeBFW9wZW5zZWFyY2hA
26
26
  YW1hem9uLmNvbTAgBgNVHRIEGTAXgRVvcGVuc2VhcmNoQGFtYXpvbi5jb20wDQYJ
27
- KoZIhvcNAQEFBQADggEBAE7gBP5ecTtKb04qmEsnbJ6+yn0LUSmxPabFBnB6h1+T
28
- XW8BvBw9MpE//5fQf4HSia3m9XjRpl4WxBcJiyfLER64tk/c1JLhV2+rq3CCV/be
29
- DFSP6gY93kK7jwauajGQvyHzORaW1TBM6diIRYCMLY7Isf+PTHl0xhZZBSVm8wl6
30
- IstV+mTP2KC1l7hSzUDb4rrOSnpRB7AEczcDdkjwzHKIlw8rcL+PLLnFTOgqKyq3
31
- yXikuH6LEVykA8pgOcB9gKsB2/zMd2ZlSj2monM8Qw9EfB14ZSDTYS8VYuwWCeF0
32
- eFmXXk0ufQFKl1Yll7quHkmQ0PzKkvXTpONBT6qPkXE=
27
+ KoZIhvcNAQEFBQADggEBAH5pWLYwKWFh1OjdCReGz/VEAiF4jXXputoN5Z8ga+1Z
28
+ lg8/diJf0PlP2B46PdmxH/TVc/o+qglNO2cHVEp8xZfEd83dfioOBeK90URQUpC5
29
+ UZmO0LZusg46SQKwKa2ukpIy2fNi3PeHRiV+W2Zv69GoWppyLun+fMez7wVoah2r
30
+ r5ROUYuAvFUvga1Vm+49pKiPM5n+MAYP5t/vWhgymY3SYQ1TfewkvKAFiFXikOR+
31
+ r+j7FLyKuk5DzIxiCp8QN5dU71BbGUmsHf/C5UV76WLPOFX/szeaHhPwpjR3sK7r
32
+ 5zLgCV1KP7cgDdCYMlmZGeSViU8NV+Yy8/ghrzGpqVw=
33
33
  -----END CERTIFICATE-----
34
- date: 2021-12-16 00:00:00.000000000 Z
34
+ date: 2022-08-17 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -56,23 +56,23 @@ dependencies:
56
56
  - !ruby/object:Gem::Dependency
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.0'
62
59
  - - ">="
63
60
  - !ruby/object:Gem::Version
64
61
  version: 0.0.17
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '0.0'
65
65
  name: stud
66
66
  prerelease: false
67
67
  type: :runtime
68
68
  version_requirements: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - "~>"
71
- - !ruby/object:Gem::Version
72
- version: '0.0'
73
70
  - - ">="
74
71
  - !ruby/object:Gem::Version
75
72
  version: 0.0.17
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.0'
76
76
  - !ruby/object:Gem::Dependency
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
@@ -110,23 +110,43 @@ dependencies:
110
110
  - !ruby/object:Gem::Dependency
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '2'
116
113
  - - ">="
117
114
  - !ruby/object:Gem::Version
118
115
  version: 2.11.632
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '2'
119
119
  name: aws-sdk
120
120
  prerelease: false
121
121
  type: :runtime
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 2.11.632
124
127
  - - "~>"
125
128
  - !ruby/object:Gem::Version
126
129
  version: '2'
130
+ - !ruby/object:Gem::Dependency
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
127
133
  - - ">="
128
134
  - !ruby/object:Gem::Version
129
- version: 2.11.632
135
+ version: 2.3.0
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2'
139
+ name: json
140
+ prerelease: false
141
+ type: :runtime
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 2.3.0
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '2'
130
150
  - !ruby/object:Gem::Dependency
131
151
  requirement: !ruby/object:Gem::Requirement
132
152
  requirements:
@@ -186,17 +206,17 @@ dependencies:
186
206
  - !ruby/object:Gem::Dependency
187
207
  requirement: !ruby/object:Gem::Requirement
188
208
  requirements:
189
- - - ">="
209
+ - - "~>"
190
210
  - !ruby/object:Gem::Version
191
- version: '0'
211
+ version: '1'
192
212
  name: opensearch-ruby
193
213
  prerelease: false
194
214
  type: :development
195
215
  version_requirements: !ruby/object:Gem::Requirement
196
216
  requirements:
197
- - - ">="
217
+ - - "~>"
198
218
  - !ruby/object:Gem::Version
199
- version: '0'
219
+ version: '1'
200
220
  description: This gem is a Logstash plugin required to be installed on top of the
201
221
  Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gem. This gem
202
222
  is not a stand-alone program
@@ -224,7 +244,11 @@ files:
224
244
  - lib/logstash/outputs/opensearch/http_client_builder.rb
225
245
  - lib/logstash/outputs/opensearch/template_manager.rb
226
246
  - lib/logstash/outputs/opensearch/templates/ecs-disabled/1x.json
247
+ - lib/logstash/outputs/opensearch/templates/ecs-disabled/2x.json
227
248
  - lib/logstash/outputs/opensearch/templates/ecs-disabled/7x.json
249
+ - lib/logstash/outputs/opensearch/templates/ecs-v8/1x.json
250
+ - lib/logstash/outputs/opensearch/templates/ecs-v8/2x.json
251
+ - lib/logstash/outputs/opensearch/templates/ecs-v8/7x.json
228
252
  - lib/logstash/plugin_mixins/opensearch/api_configs.rb
229
253
  - lib/logstash/plugin_mixins/opensearch/common.rb
230
254
  - logstash-output-opensearch.gemspec
@@ -282,8 +306,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
306
  - !ruby/object:Gem::Version
283
307
  version: '0'
284
308
  requirements: []
285
- rubyforge_project:
286
- rubygems_version: 2.7.10
309
+ rubygems_version: 3.3.20
287
310
  signing_key:
288
311
  specification_version: 4
289
312
  summary: Stores logs in OpenSearch
metadata.gz.sig CHANGED
Binary file