logstash-output-elasticsearch 11.21.0-java → 11.22.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
- data/CHANGELOG.md +3 -0
- data/lib/logstash/outputs/elasticsearch.rb +26 -5
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/unit/outputs/elasticsearch_spec.rb +102 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 717e2454d150e9f3ae5c7ad9a7cd6d7e4e4451f538e276c1fa1e42a0b6c37f71
|
4
|
+
data.tar.gz: 714e7b7df621a80edd1a0e3eb0978b7a5b8a3789b2652e76c3336fcf8b7a6dfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d84c7f34a39b0566770881161f50c41f1270ab94131d6d70a35f4264a8e32631ac2da4e607dc61acc565b8e2ab87ca539949046233bce135ffc52c2caf6870e
|
7
|
+
data.tar.gz: b544f8e2e0f577970464e1bf72adda1e10254c361e3c749c0bfd84ca0184e59736d53dc5e6891f8e8369d2cc101a87af661aec90cc3038aaf2261893cf25eba2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 11.22.0
|
2
|
+
- Added support for propagating event processing metadata when this output is downstream of an Elastic Integration Filter and configured _without_ explicit `version`, `version_type`, or `routing` directives [#1158](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1158)
|
3
|
+
|
1
4
|
## 11.21.0
|
2
5
|
- Added support for propagating event processing metadata when this output is downstream of an Elastic Integration Filter and configured _without_ explicit `index`, `document_id`, or `pipeline` directives [#1155](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1155)
|
3
6
|
|
@@ -499,9 +499,6 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
499
499
|
params[retry_on_conflict_action_name] = @retry_on_conflict
|
500
500
|
end
|
501
501
|
|
502
|
-
params[:version] = event.sprintf(@version) if @version
|
503
|
-
params[:version_type] = event.sprintf(@version_type) if @version_type
|
504
|
-
|
505
502
|
EventActionTuple.new(action, params, event)
|
506
503
|
end
|
507
504
|
|
@@ -541,12 +538,12 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
541
538
|
# @private shared event params factory between index and data_stream mode
|
542
539
|
def common_event_params(event)
|
543
540
|
event_control = event.get("[@metadata][_ingest_document]")
|
544
|
-
event_id, event_pipeline, event_index = event_control&.values_at("id","pipeline","index") rescue nil
|
541
|
+
event_id, event_pipeline, event_index, event_routing, event_version, event_version_type = event_control&.values_at("id","pipeline","index", "routing", "version", "version_type") rescue nil
|
545
542
|
|
546
543
|
params = {
|
547
544
|
:_id => resolve_document_id(event, event_id),
|
548
545
|
:_index => resolve_index!(event, event_index),
|
549
|
-
routing_field_name =>
|
546
|
+
routing_field_name => resolve_routing(event, event_routing)
|
550
547
|
}
|
551
548
|
|
552
549
|
target_pipeline = resolve_pipeline(event, event_pipeline)
|
@@ -557,9 +554,33 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
557
554
|
# }
|
558
555
|
params[:pipeline] = target_pipeline unless (target_pipeline.nil? || target_pipeline.empty?)
|
559
556
|
|
557
|
+
resolved_version = resolve_version(event, event_version)
|
558
|
+
resolved_version_type = resolve_version_type(event, event_version_type)
|
559
|
+
# avoid to add nil valued key-value pairs
|
560
|
+
params[:version] = resolved_version unless resolved_version.nil?
|
561
|
+
params[:version_type] = resolved_version_type unless resolved_version_type.nil?
|
562
|
+
|
560
563
|
params
|
561
564
|
end
|
562
565
|
|
566
|
+
def resolve_version(event, event_version)
|
567
|
+
return event_version if event_version && !@version
|
568
|
+
event.sprintf(@version) if @version
|
569
|
+
end
|
570
|
+
private :resolve_version
|
571
|
+
|
572
|
+
def resolve_version_type(event, event_version_type)
|
573
|
+
return event_version_type if event_version_type && !@version_type
|
574
|
+
event.sprintf(@version_type) if @version_type
|
575
|
+
end
|
576
|
+
private :resolve_version_type
|
577
|
+
|
578
|
+
def resolve_routing(event, event_routing)
|
579
|
+
return event_routing if event_routing && !@routing
|
580
|
+
@routing ? event.sprintf(@routing) : nil
|
581
|
+
end
|
582
|
+
private :resolve_routing
|
583
|
+
|
563
584
|
def resolve_document_id(event, event_id)
|
564
585
|
return event.sprintf(@document_id) if @document_id
|
565
586
|
return event_id || nil
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-output-elasticsearch'
|
3
|
-
s.version = '11.
|
3
|
+
s.version = '11.22.0'
|
4
4
|
s.licenses = ['apache-2.0']
|
5
5
|
s.summary = "Stores logs in Elasticsearch"
|
6
6
|
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"
|
@@ -275,6 +275,108 @@ describe LogStash::Outputs::ElasticSearch do
|
|
275
275
|
let(:event_fields) {{}}
|
276
276
|
let(:event) { LogStash::Event.new(event_fields)}
|
277
277
|
|
278
|
+
context "when plugin's version is specified" do
|
279
|
+
let(:options) { super().merge("version" => "123")}
|
280
|
+
|
281
|
+
context "when the event contains an integration metadata version" do
|
282
|
+
let(:event) { LogStash::Event.new({"@metadata" => {"_ingest_document" => {"version" => "456"}}}) }
|
283
|
+
|
284
|
+
it "plugin's version is used" do
|
285
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:version => "123")
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
context "when the event DOESN'T contains an integration metadata version" do
|
290
|
+
it "plugin's version is used" do
|
291
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:version => "123")
|
292
|
+
end
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
context "when plugin's version is NOT specified" do
|
297
|
+
context "when the event contains an integration metadata version" do
|
298
|
+
let(:event) { LogStash::Event.new({"@metadata" => {"_ingest_document" => {"version" => "456"}}}) }
|
299
|
+
|
300
|
+
it "event's metadata version is used" do
|
301
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:version => "456")
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
context "when the event DOESN'T contain an integration metadata version" do
|
306
|
+
it "plugin's default id mechanism is used" do
|
307
|
+
expect(subject.send(:event_action_tuple, event)[1]).to_not include(:version)
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
context "when plugin's version_type is specified" do
|
313
|
+
let(:options) { super().merge("version_type" => "internal")}
|
314
|
+
|
315
|
+
context "when the event contains an integration metadata version_type" do
|
316
|
+
let(:event) { LogStash::Event.new({"@metadata" => {"_ingest_document" => {"version_type" => "external"}}}) }
|
317
|
+
|
318
|
+
it "plugin's version_type is used" do
|
319
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:version_type => "internal")
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
context "when the event DOESN'T contains an integration metadata version_type" do
|
324
|
+
it "plugin's version_type is used" do
|
325
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:version_type => "internal")
|
326
|
+
end
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
context "when plugin's version_type is NOT specified" do
|
331
|
+
context "when the event contains an integration metadata version_type" do
|
332
|
+
let(:event) { LogStash::Event.new({"@metadata" => {"_ingest_document" => {"version_type" => "external"}}}) }
|
333
|
+
|
334
|
+
it "event's metadata version_type is used" do
|
335
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:version_type => "external")
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
context "when the event DOESN'T contain an integration metadata version_type" do
|
340
|
+
it "plugin's default id mechanism is used" do
|
341
|
+
expect(subject.send(:event_action_tuple, event)[1]).to_not include(:version_type)
|
342
|
+
end
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
context "when plugin's routing is specified" do
|
347
|
+
let(:options) { super().merge("routing" => "settings_routing")}
|
348
|
+
|
349
|
+
context "when the event contains an integration metadata routing" do
|
350
|
+
let(:event) { LogStash::Event.new({"@metadata" => {"_ingest_document" => {"routing" => "meta-document-routing"}}}) }
|
351
|
+
|
352
|
+
it "plugin's routing is used" do
|
353
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:routing => "settings_routing")
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
context "when the event DOESN'T contains an integration metadata routing" do
|
358
|
+
it "plugin's routing is used" do
|
359
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:routing => "settings_routing")
|
360
|
+
end
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
context "when plugin's routing is NOT specified" do
|
365
|
+
context "when the event contains an integration metadata routing" do
|
366
|
+
let(:event) { LogStash::Event.new({"@metadata" => {"_ingest_document" => {"routing" => "meta-document-routing"}}}) }
|
367
|
+
|
368
|
+
it "event's metadata routing is used" do
|
369
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:routing => "meta-document-routing")
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
context "when the event DOESN'T contain an integration metadata routing" do
|
374
|
+
it "plugin's default id mechanism is used" do
|
375
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:routing => nil)
|
376
|
+
end
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
278
380
|
context "when plugin's index is specified" do
|
279
381
|
let(:options) { super().merge("index" => "index_from_settings")}
|
280
382
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 11.
|
4
|
+
version: 11.22.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|