logstash-output-elasticsearch 11.0.0-java → 11.0.4-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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/docs/index.asciidoc +13 -13
  4. data/lib/logstash/outputs/elasticsearch/data_stream_support.rb +1 -1
  5. data/lib/logstash/outputs/elasticsearch/http_client/pool.rb +2 -28
  6. data/lib/logstash/outputs/elasticsearch/ilm.rb +2 -33
  7. data/lib/logstash/outputs/elasticsearch/license_checker.rb +12 -6
  8. data/lib/logstash/outputs/elasticsearch/template_manager.rb +1 -1
  9. data/lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-8x.json +1 -0
  10. data/lib/logstash/outputs/elasticsearch.rb +18 -15
  11. data/lib/logstash/plugin_mixins/elasticsearch/common.rb +2 -1
  12. data/logstash-output-elasticsearch.gemspec +2 -2
  13. data/spec/es_spec_helper.rb +4 -6
  14. data/spec/fixtures/_nodes/{5x_6x.json → 6x.json} +5 -5
  15. data/spec/integration/outputs/compressed_indexing_spec.rb +47 -46
  16. data/spec/integration/outputs/delete_spec.rb +49 -51
  17. data/spec/integration/outputs/ilm_spec.rb +230 -246
  18. data/spec/integration/outputs/index_spec.rb +5 -2
  19. data/spec/integration/outputs/index_version_spec.rb +78 -82
  20. data/spec/integration/outputs/ingest_pipeline_spec.rb +58 -60
  21. data/spec/integration/outputs/painless_update_spec.rb +74 -164
  22. data/spec/integration/outputs/parent_spec.rb +67 -75
  23. data/spec/integration/outputs/retry_spec.rb +2 -2
  24. data/spec/integration/outputs/sniffer_spec.rb +15 -53
  25. data/spec/integration/outputs/templates_spec.rb +79 -81
  26. data/spec/integration/outputs/update_spec.rb +99 -101
  27. data/spec/spec_helper.rb +1 -5
  28. data/spec/unit/outputs/elasticsearch/data_stream_support_spec.rb +0 -14
  29. data/spec/unit/outputs/elasticsearch/http_client/pool_spec.rb +30 -37
  30. data/spec/unit/outputs/elasticsearch/template_manager_spec.rb +9 -9
  31. data/spec/unit/outputs/elasticsearch_spec.rb +54 -18
  32. metadata +8 -22
  33. data/lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-2x.json +0 -95
  34. data/lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-5x.json +0 -46
  35. data/spec/fixtures/_nodes/2x_1x.json +0 -27
  36. data/spec/fixtures/scripts/groovy/scripted_update.groovy +0 -2
  37. data/spec/fixtures/scripts/groovy/scripted_update_nested.groovy +0 -2
  38. data/spec/fixtures/scripts/groovy/scripted_upsert.groovy +0 -2
  39. data/spec/integration/outputs/groovy_update_spec.rb +0 -150
  40. data/spec/integration/outputs/templates_5x_spec.rb +0 -98
metadata CHANGED
@@ -1,21 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-output-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.0.0
4
+ version: 11.0.4
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-19 00:00:00.000000000 Z
11
+ date: 2021-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.5.4
18
+ version: 0.7.1
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
21
  version: 1.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.5.4
29
+ version: 0.7.1
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.0
@@ -179,26 +179,21 @@ files:
179
179
  - lib/logstash/outputs/elasticsearch/ilm.rb
180
180
  - lib/logstash/outputs/elasticsearch/license_checker.rb
181
181
  - lib/logstash/outputs/elasticsearch/template_manager.rb
182
- - lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-2x.json
183
- - lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-5x.json
184
182
  - lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-6x.json
185
183
  - lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-7x.json
186
184
  - lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-8x.json
187
185
  - lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-6x.json
188
186
  - lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-7x.json
187
+ - lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-8x.json
189
188
  - lib/logstash/plugin_mixins/elasticsearch/api_configs.rb
190
189
  - lib/logstash/plugin_mixins/elasticsearch/common.rb
191
190
  - lib/logstash/plugin_mixins/elasticsearch/noop_license_checker.rb
192
191
  - logstash-output-elasticsearch.gemspec
193
192
  - spec/es_spec_helper.rb
194
- - spec/fixtures/_nodes/2x_1x.json
195
- - spec/fixtures/_nodes/5x_6x.json
193
+ - spec/fixtures/_nodes/6x.json
196
194
  - spec/fixtures/_nodes/7x.json
197
195
  - spec/fixtures/htpasswd
198
196
  - spec/fixtures/nginx_reverse_proxy.conf
199
- - spec/fixtures/scripts/groovy/scripted_update.groovy
200
- - spec/fixtures/scripts/groovy/scripted_update_nested.groovy
201
- - spec/fixtures/scripts/groovy/scripted_upsert.groovy
202
197
  - spec/fixtures/scripts/painless/scripted_update.painless
203
198
  - spec/fixtures/scripts/painless/scripted_update_nested.painless
204
199
  - spec/fixtures/scripts/painless/scripted_upsert.painless
@@ -213,7 +208,6 @@ files:
213
208
  - spec/integration/outputs/create_spec.rb
214
209
  - spec/integration/outputs/data_stream_spec.rb
215
210
  - spec/integration/outputs/delete_spec.rb
216
- - spec/integration/outputs/groovy_update_spec.rb
217
211
  - spec/integration/outputs/ilm_spec.rb
218
212
  - spec/integration/outputs/index_spec.rb
219
213
  - spec/integration/outputs/index_version_spec.rb
@@ -225,7 +219,6 @@ files:
225
219
  - spec/integration/outputs/retry_spec.rb
226
220
  - spec/integration/outputs/routing_spec.rb
227
221
  - spec/integration/outputs/sniffer_spec.rb
228
- - spec/integration/outputs/templates_5x_spec.rb
229
222
  - spec/integration/outputs/templates_spec.rb
230
223
  - spec/integration/outputs/update_spec.rb
231
224
  - spec/spec_helper.rb
@@ -266,21 +259,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
266
259
  - !ruby/object:Gem::Version
267
260
  version: '0'
268
261
  requirements: []
269
- rubyforge_project:
270
- rubygems_version: 2.6.13
262
+ rubygems_version: 3.1.6
271
263
  signing_key:
272
264
  specification_version: 4
273
265
  summary: Stores logs in Elasticsearch
274
266
  test_files:
275
267
  - spec/es_spec_helper.rb
276
- - spec/fixtures/_nodes/2x_1x.json
277
- - spec/fixtures/_nodes/5x_6x.json
268
+ - spec/fixtures/_nodes/6x.json
278
269
  - spec/fixtures/_nodes/7x.json
279
270
  - spec/fixtures/htpasswd
280
271
  - spec/fixtures/nginx_reverse_proxy.conf
281
- - spec/fixtures/scripts/groovy/scripted_update.groovy
282
- - spec/fixtures/scripts/groovy/scripted_update_nested.groovy
283
- - spec/fixtures/scripts/groovy/scripted_upsert.groovy
284
272
  - spec/fixtures/scripts/painless/scripted_update.painless
285
273
  - spec/fixtures/scripts/painless/scripted_update_nested.painless
286
274
  - spec/fixtures/scripts/painless/scripted_upsert.painless
@@ -295,7 +283,6 @@ test_files:
295
283
  - spec/integration/outputs/create_spec.rb
296
284
  - spec/integration/outputs/data_stream_spec.rb
297
285
  - spec/integration/outputs/delete_spec.rb
298
- - spec/integration/outputs/groovy_update_spec.rb
299
286
  - spec/integration/outputs/ilm_spec.rb
300
287
  - spec/integration/outputs/index_spec.rb
301
288
  - spec/integration/outputs/index_version_spec.rb
@@ -307,7 +294,6 @@ test_files:
307
294
  - spec/integration/outputs/retry_spec.rb
308
295
  - spec/integration/outputs/routing_spec.rb
309
296
  - spec/integration/outputs/sniffer_spec.rb
310
- - spec/integration/outputs/templates_5x_spec.rb
311
297
  - spec/integration/outputs/templates_spec.rb
312
298
  - spec/integration/outputs/update_spec.rb
313
299
  - spec/spec_helper.rb
@@ -1,95 +0,0 @@
1
- {
2
- "template" : "logstash-*",
3
- "settings" : {
4
- "index.refresh_interval" : "5s"
5
- },
6
- "mappings" : {
7
- "_default_" : {
8
- "_all" : {"enabled" : true, "omit_norms" : true},
9
- "dynamic_templates" : [ {
10
- "message_field" : {
11
- "path_match" : "message",
12
- "match_mapping_type" : "string",
13
- "mapping" : {
14
- "type" : "string", "index" : "analyzed", "omit_norms" : true,
15
- "fielddata" : { "format" : "disabled" }
16
- }
17
- }
18
- }, {
19
- "string_fields" : {
20
- "match" : "*",
21
- "match_mapping_type" : "string",
22
- "mapping" : {
23
- "type" : "string", "index" : "analyzed", "omit_norms" : true,
24
- "fielddata" : { "format" : "disabled" },
25
- "fields" : {
26
- "raw" : {"type": "string", "index" : "not_analyzed", "doc_values" : true, "ignore_above" : 256}
27
- }
28
- }
29
- }
30
- }, {
31
- "float_fields" : {
32
- "match" : "*",
33
- "match_mapping_type" : "float",
34
- "mapping" : { "type" : "float", "doc_values" : true }
35
- }
36
- }, {
37
- "double_fields" : {
38
- "match" : "*",
39
- "match_mapping_type" : "double",
40
- "mapping" : { "type" : "double", "doc_values" : true }
41
- }
42
- }, {
43
- "byte_fields" : {
44
- "match" : "*",
45
- "match_mapping_type" : "byte",
46
- "mapping" : { "type" : "byte", "doc_values" : true }
47
- }
48
- }, {
49
- "short_fields" : {
50
- "match" : "*",
51
- "match_mapping_type" : "short",
52
- "mapping" : { "type" : "short", "doc_values" : true }
53
- }
54
- }, {
55
- "integer_fields" : {
56
- "match" : "*",
57
- "match_mapping_type" : "integer",
58
- "mapping" : { "type" : "integer", "doc_values" : true }
59
- }
60
- }, {
61
- "long_fields" : {
62
- "match" : "*",
63
- "match_mapping_type" : "long",
64
- "mapping" : { "type" : "long", "doc_values" : true }
65
- }
66
- }, {
67
- "date_fields" : {
68
- "match" : "*",
69
- "match_mapping_type" : "date",
70
- "mapping" : { "type" : "date", "doc_values" : true }
71
- }
72
- }, {
73
- "geo_point_fields" : {
74
- "match" : "*",
75
- "match_mapping_type" : "geo_point",
76
- "mapping" : { "type" : "geo_point", "doc_values" : true }
77
- }
78
- } ],
79
- "properties" : {
80
- "@timestamp": { "type": "date", "doc_values" : true },
81
- "@version": { "type": "string", "index": "not_analyzed", "doc_values" : true },
82
- "geoip" : {
83
- "type" : "object",
84
- "dynamic": true,
85
- "properties" : {
86
- "ip": { "type": "ip", "doc_values" : true },
87
- "location" : { "type" : "geo_point", "doc_values" : true },
88
- "latitude" : { "type" : "float", "doc_values" : true },
89
- "longitude" : { "type" : "float", "doc_values" : true }
90
- }
91
- }
92
- }
93
- }
94
- }
95
- }
@@ -1,46 +0,0 @@
1
- {
2
- "template" : "logstash-*",
3
- "version" : 50001,
4
- "settings" : {
5
- "index.refresh_interval" : "5s"
6
- },
7
- "mappings" : {
8
- "_default_" : {
9
- "_all" : {"enabled" : true, "norms" : false},
10
- "dynamic_templates" : [ {
11
- "message_field" : {
12
- "path_match" : "message",
13
- "match_mapping_type" : "string",
14
- "mapping" : {
15
- "type" : "text",
16
- "norms" : false
17
- }
18
- }
19
- }, {
20
- "string_fields" : {
21
- "match" : "*",
22
- "match_mapping_type" : "string",
23
- "mapping" : {
24
- "type" : "text", "norms" : false,
25
- "fields" : {
26
- "keyword" : { "type": "keyword", "ignore_above": 256 }
27
- }
28
- }
29
- }
30
- } ],
31
- "properties" : {
32
- "@timestamp": { "type": "date", "include_in_all": false },
33
- "@version": { "type": "keyword", "include_in_all": false },
34
- "geoip" : {
35
- "dynamic": true,
36
- "properties" : {
37
- "ip": { "type": "ip" },
38
- "location" : { "type" : "geo_point" },
39
- "latitude" : { "type" : "half_float" },
40
- "longitude" : { "type" : "half_float" }
41
- }
42
- }
43
- }
44
- }
45
- }
46
- }
@@ -1,27 +0,0 @@
1
- {
2
- "cluster_name" : "dev",
3
- "nodes" : {
4
- "Ur_68iBvTlm7Xr1HgSsh6w" : {
5
- "name" : "dev-es-master01",
6
- "transport_address" : "http://localhost:9200",
7
- "host" : "127.0.0.1",
8
- "ip" : "127.0.0.1",
9
- "version" : "2.4.6",
10
- "build" : "5376dca"
11
- },
12
- "sari4do3RG-mgh2CIZeHwA" : {
13
- "name" : "dev-es-data01",
14
- "transport_address" : "http://localhost:9201",
15
- "host" : "127.0.0.1",
16
- "ip" : "127.0.0.1",
17
- "version" : "2.4.6",
18
- "build" : "5376dca",
19
- "http_address" : "127.0.0.1:9201",
20
- "http" : {
21
- "bound_address" : [ "[::1]:9201", "127.0.0.1:9201" ],
22
- "publish_address" : "127.0.0.1:9201",
23
- "max_content_length_in_bytes" : 104857600
24
- }
25
- }
26
- }
27
- }
@@ -1,2 +0,0 @@
1
- ctx._source.counter += event["count"]
2
-
@@ -1,2 +0,0 @@
1
- ctx._source.counter += event["data"]["count"]
2
-
@@ -1,2 +0,0 @@
1
- ctx._source.counter = event["counter"]
2
-
@@ -1,150 +0,0 @@
1
- require_relative "../../../spec/es_spec_helper"
2
-
3
- if ESHelper.es_version_satisfies?('>= 2', '< 6')
4
- describe "Update actions using groovy scripts", :integration => true, :update_tests => 'groovy' do
5
- require "logstash/outputs/elasticsearch"
6
-
7
- def get_es_output( options={} )
8
- settings = {
9
- "manage_template" => true,
10
- "index" => "logstash-update",
11
- "template_overwrite" => true,
12
- "hosts" => get_host_port(),
13
- "action" => "update",
14
- "script_lang" => "groovy"
15
- }
16
- LogStash::Outputs::ElasticSearch.new(settings.merge!(options))
17
- end
18
-
19
- before :each do
20
- @es = get_client
21
- # Delete all templates first.
22
- # Clean ES of data before we start.
23
- @es.indices.delete_template(:name => "*")
24
- # This can fail if there are no indexes, ignore failure.
25
- @es.indices.delete(:index => "*") rescue nil
26
- @es.index(
27
- :index => 'logstash-update',
28
- :type => doc_type,
29
- :id => "123",
30
- :body => { :message => 'Test', :counter => 1 }
31
- )
32
- @es.indices.refresh
33
- end
34
-
35
- context "scripted updates" do
36
- it "should increment a counter with event/doc 'count' variable" do
37
- subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update', 'script_type' => 'file' })
38
- subject.register
39
- subject.multi_receive([LogStash::Event.new("count" => 2)])
40
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
41
- expect(r["_source"]["counter"]).to eq(3)
42
- end
43
-
44
- it "should increment a counter with event/doc '[data][count]' nested variable" do
45
- subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update_nested', 'script_type' => 'file' })
46
- subject.register
47
- subject.multi_receive([LogStash::Event.new("data" => { "count" => 3 })])
48
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
49
- expect(r["_source"]["counter"]).to eq(4)
50
- end
51
-
52
- it "should increment a counter with event/doc 'count' variable with inline script" do
53
- subject = get_es_output({
54
- 'document_id' => "123",
55
- 'script' => 'ctx._source.counter += event["counter"]',
56
- 'script_lang' => 'groovy',
57
- 'script_type' => 'inline'
58
- })
59
- subject.register
60
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
61
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
62
- expect(r["_source"]["counter"]).to eq(4)
63
- end
64
-
65
- it "should increment a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
66
- subject = get_es_output({
67
- 'document_id' => "123",
68
- 'doc_as_upsert' => true,
69
- 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += event["counter"]; } else { ctx._source.counter = event["counter"]; }',
70
- 'script_lang' => 'groovy',
71
- 'script_type' => 'inline'
72
- })
73
- subject.register
74
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
75
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
76
- expect(r["_source"]["counter"]).to eq(4)
77
- end
78
-
79
- it "should, with new doc, set a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
80
- subject = get_es_output({
81
- 'document_id' => "456",
82
- 'doc_as_upsert' => true,
83
- 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += event["count"]; } else { ctx._source.counter = event["count"]; }',
84
- 'script_lang' => 'groovy',
85
- 'script_type' => 'inline'
86
- })
87
- subject.register
88
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
89
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
90
- expect(r["_source"]["counter"]).to eq(3)
91
- end
92
-
93
- it "should increment a counter with event/doc 'count' variable with indexed script" do
94
- @es.put_script lang: 'groovy', id: 'indexed_update', body: { script: 'ctx._source.counter += event["count"]' }
95
- subject = get_es_output({
96
- 'document_id' => "123",
97
- 'script' => 'indexed_update',
98
- 'script_lang' => 'groovy',
99
- 'script_type' => 'indexed'
100
- })
101
- subject.register
102
- subject.multi_receive([LogStash::Event.new("count" => 4 )])
103
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
104
- expect(r["_source"]["counter"]).to eq(5)
105
- end
106
- end
107
-
108
- context "when update with upsert" do
109
- it "should create new documents with provided upsert" do
110
- subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
111
- subject.register
112
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
113
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
114
- expect(r["_source"]["message"]).to eq('upsert message')
115
- end
116
-
117
- it "should create new documents with event/doc as upsert" do
118
- subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
119
- subject.register
120
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
121
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
122
- expect(r["_source"]["message"]).to eq('sample message here')
123
- end
124
-
125
- it "should fail on documents with event/doc as upsert at external version" do
126
- subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true, 'version' => 999, "version_type" => "external" })
127
- expect { subject.register }.to raise_error(LogStash::ConfigurationError)
128
- end
129
- end
130
-
131
- context "updates with scripted upsert" do
132
- it "should create new documents with upsert content" do
133
- subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_update', 'upsert' => '{"message": "upsert message"}', 'script_type' => 'file' })
134
- subject.register
135
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
136
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
137
- expect(r["_source"]["message"]).to eq('upsert message')
138
- end
139
-
140
- it "should create new documents with event/doc as script params" do
141
- subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_upsert', 'scripted_upsert' => true, 'script_type' => 'file' })
142
- subject.register
143
- subject.multi_receive([LogStash::Event.new("counter" => 1)])
144
- @es.indices.refresh
145
- r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
146
- expect(r["_source"]["counter"]).to eq(1)
147
- end
148
- end
149
- end
150
- end