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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/DEVELOPER_GUIDE.md +9 -0
- data/Gemfile +1 -1
- data/MAINTAINERS.md +3 -0
- data/README.md +70 -1
- data/lib/logstash/outputs/opensearch/http_client.rb +1 -1
- data/lib/logstash/outputs/opensearch/templates/ecs-disabled/2x.json +44 -0
- data/lib/logstash/outputs/opensearch/templates/ecs-v8/1x.json +5252 -0
- data/lib/logstash/outputs/opensearch/templates/ecs-v8/2x.json +5252 -0
- data/lib/logstash/outputs/opensearch/templates/ecs-v8/7x.json +5252 -0
- data/lib/logstash/outputs/opensearch.rb +2 -2
- data/logstash-output-opensearch.gemspec +3 -2
- data/spec/integration/outputs/compressed_indexing_spec.rb +7 -1
- data/spec/integration/outputs/index_spec.rb +7 -1
- data/spec/integration/outputs/ingest_pipeline_spec.rb +2 -1
- data/spec/integration/outputs/parent_spec.rb +1 -1
- data/spec/integration/outputs/retry_spec.rb +2 -1
- data/spec/integration/outputs/templates_spec.rb +83 -57
- data/spec/opensearch_spec_helper.rb +10 -0
- data/spec/unit/outputs/opensearch/http_client_spec.rb +1 -1
- data/spec/unit/outputs/opensearch/template_manager_spec.rb +23 -4
- data/spec/unit/outputs/opensearch_spec.rb +16 -0
- data.tar.gz.sig +0 -0
- metadata +48 -25
- metadata.gz.sig +0 -0
@@ -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.
|
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
|
-
|
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
|
-
|
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
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
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
|
-
|
61
|
-
|
62
|
-
|
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
|
-
|
65
|
-
|
66
|
-
|
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
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
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
|
-
|
91
|
-
|
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
|
-
|
95
|
-
|
96
|
-
terms = results["buckets"].collect { |b| b["key"] }
|
115
|
+
context 'with ECS enabled' do
|
116
|
+
let(:ecs_compatibility) { :v1 }
|
97
117
|
|
98
|
-
|
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
|
-
|
101
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
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.
|
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
|
-
|
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
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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:
|
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.
|
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: '
|
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: '
|
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
|
-
|
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
|