logstash-output-elasticsearch 11.0.0-java → 11.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
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