logstash-output-elasticsearch 11.12.4-java → 11.13.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/docs/index.asciidoc +3 -4
- data/lib/logstash/outputs/elasticsearch.rb +12 -9
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/unit/outputs/elasticsearch_spec.rb +61 -2
- 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: 2e8764e50f36193ca77db2e6abe008e64732e52fd102554d6325d53180041ca6
|
4
|
+
data.tar.gz: 8e2525721fdf4a3e82c5983ea815125c407b91ab7e57e18d11256346c54d02c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef4c7059810d99d9aaa5d36a06a87eaf771ab1472056f8ed4bc7b05dfaf9280b6cc1a02a623bd1f5d25b7bb2f6458310450ebef91d8301757f8759512d1da625
|
7
|
+
data.tar.gz: e0970b2d8fc1413bcc7ab25bb02393f8be1ffe12fa0bf6c2349ad6ba3790ee844cfcf42136b0c10ea1b46e2c3bd2238da7a285869255076da28ba47ab6d84f9d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 11.13.0
|
2
|
+
- add technology preview support for allowing events to individually encode a default pipeline with `[@metadata][target_ingest_pipeline]` (as part of a technology preview, this feature may change without notice) [#1113](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1113)
|
3
|
+
|
1
4
|
## 11.12.4
|
2
5
|
- Changed the `manage_template` default value to `false` when data streams is enabled [#1111](https://github.com/logstash-plugins/logstash-output-elasticsearch/pull/1111)
|
3
6
|
- Added the `manage_template => false` as a valid data stream option
|
data/docs/index.asciidoc
CHANGED
@@ -849,12 +849,11 @@ not also set this field. That will raise an error at startup
|
|
849
849
|
===== `pipeline`
|
850
850
|
|
851
851
|
* Value type is <<string,string>>
|
852
|
-
*
|
852
|
+
* There is no default value.
|
853
853
|
|
854
854
|
Set which ingest pipeline you wish to execute for an event. You can also use
|
855
|
-
event dependent configuration here like `pipeline =>
|
856
|
-
|
857
|
-
resolves to empty string ("").
|
855
|
+
event dependent configuration here like `pipeline => "%{[@metadata][pipeline]}"`.
|
856
|
+
The pipeline parameter won't be set if the value resolves to empty string ("").
|
858
857
|
|
859
858
|
[id="plugins-{type}s-{plugin}-pool_max"]
|
860
859
|
===== `pool_max`
|
@@ -524,19 +524,22 @@ class LogStash::Outputs::ElasticSearch < LogStash::Outputs::Base
|
|
524
524
|
routing_field_name => @routing ? event.sprintf(@routing) : nil
|
525
525
|
}
|
526
526
|
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
params[:pipeline] = value unless value.empty?
|
535
|
-
end
|
527
|
+
target_pipeline = resolve_pipeline(event)
|
528
|
+
# convention: empty string equates to not using a pipeline
|
529
|
+
# this is useful when using a field reference in the pipeline setting, e.g.
|
530
|
+
# elasticsearch {
|
531
|
+
# pipeline => "%{[@metadata][pipeline]}"
|
532
|
+
# }
|
533
|
+
params[:pipeline] = target_pipeline unless (target_pipeline.nil? || target_pipeline.empty?)
|
536
534
|
|
537
535
|
params
|
538
536
|
end
|
539
537
|
|
538
|
+
def resolve_pipeline(event)
|
539
|
+
pipeline_template = @pipeline || event.get("[@metadata][target_ingest_pipeline]")&.to_s
|
540
|
+
pipeline_template && event.sprintf(pipeline_template)
|
541
|
+
end
|
542
|
+
|
540
543
|
@@plugins = Gem::Specification.find_all{|spec| spec.name =~ /logstash-output-elasticsearch-/ }
|
541
544
|
|
542
545
|
@@plugins.each do |plugin|
|
@@ -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.13.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"
|
@@ -590,7 +590,7 @@ describe LogStash::Outputs::ElasticSearch do
|
|
590
590
|
|
591
591
|
let(:event) { LogStash::Event.new("pipeline" => "my-ingest-pipeline") }
|
592
592
|
|
593
|
-
it "
|
593
|
+
it "interpolate the pipeline value and set it" do
|
594
594
|
expect(subject.send(:event_action_tuple, event)[1]).to include(:pipeline => "my-ingest-pipeline")
|
595
595
|
end
|
596
596
|
end
|
@@ -600,7 +600,66 @@ describe LogStash::Outputs::ElasticSearch do
|
|
600
600
|
|
601
601
|
let(:event) { LogStash::Event.new("pipeline" => "") }
|
602
602
|
|
603
|
-
it "
|
603
|
+
it "interpolates the pipeline value but not set it because it is empty" do
|
604
|
+
expect(subject.send(:event_action_tuple, event)[1]).not_to include(:pipeline)
|
605
|
+
end
|
606
|
+
end
|
607
|
+
|
608
|
+
context "with both pipeline and target_ingest_pipeline" do
|
609
|
+
let(:options) { {"pipeline" => "%{pipeline}" } }
|
610
|
+
let(:event) { LogStash::Event.new({"pipeline" => "my-ingest-pipeline", "[@metadata][target_ingest_pipeline]" => "meta-ingest-pipeline"}) }
|
611
|
+
|
612
|
+
it "interpolates the plugin's pipeline value" do
|
613
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:pipeline => "my-ingest-pipeline")
|
614
|
+
end
|
615
|
+
|
616
|
+
context "when the plugin's `pipeline` is constant" do
|
617
|
+
let(:options) { super().merge("pipeline" => "my-constant-pipeline") }
|
618
|
+
it "uses plugin's pipeline value" do
|
619
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:pipeline => "my-constant-pipeline")
|
620
|
+
end
|
621
|
+
end
|
622
|
+
|
623
|
+
context "when the plugin's `pipeline` includes an unresolvable sprintf placeholder" do
|
624
|
+
let(:options) { super().merge("pipeline" => "reference-%{unset}-field") }
|
625
|
+
it "does not use the target_ingest_pipeline" do
|
626
|
+
# when sprintf doesn't resolve a placeholder, the behaviour of our `pipeline` is UNSPECIFIED.
|
627
|
+
# here we only validate that the presence of the magic field does not
|
628
|
+
# override an explicitly-configured pipeline.
|
629
|
+
expect(subject.send(:event_action_tuple, event)[1]).to_not include(:pipeline => "my-ingest-pipeline")
|
630
|
+
end
|
631
|
+
end
|
632
|
+
end
|
633
|
+
|
634
|
+
context "with empty pipeline and target_ingest_pipeline" do
|
635
|
+
let(:options) { {"pipeline" => "%{pipeline}" } }
|
636
|
+
let(:event) { LogStash::Event.new({"pipeline" => "", "[@metadata][target_ingest_pipeline]" => "meta-ingest-pipeline"}) }
|
637
|
+
|
638
|
+
it "interpolates the pipeline value but not set it because pipeline is empty" do
|
639
|
+
expect(subject.send(:event_action_tuple, event)[1]).not_to include(:pipeline)
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
643
|
+
context "with target_ingest_pipeline" do
|
644
|
+
let(:event) { LogStash::Event.new({"pipeline" => "", "@metadata" => {"target_ingest_pipeline" => "meta-ingest-pipeline"}}) }
|
645
|
+
|
646
|
+
it "interpolates the target_ingest_pipeline value and set it" do
|
647
|
+
expect(subject.send(:event_action_tuple, event)[1]).to include(:pipeline => "meta-ingest-pipeline")
|
648
|
+
end
|
649
|
+
end
|
650
|
+
|
651
|
+
context "with empty target_ingest_pipeline" do
|
652
|
+
let(:event) { LogStash::Event.new({"pipeline" => "", "@metadata" => {"host" => "elastic"}}) }
|
653
|
+
|
654
|
+
it "does not set pipeline" do
|
655
|
+
expect(subject.send(:event_action_tuple, event)[1]).not_to include(:pipeline)
|
656
|
+
end
|
657
|
+
end
|
658
|
+
|
659
|
+
context "with empty pipeline and empty target_ingest_pipeline" do
|
660
|
+
let(:event) { LogStash::Event.new }
|
661
|
+
|
662
|
+
it "does not set pipeline" do
|
604
663
|
expect(subject.send(:event_action_tuple, event)[1]).not_to include(:pipeline)
|
605
664
|
end
|
606
665
|
end
|
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.13.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-02-
|
11
|
+
date: 2023-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|