logstash-output-elasticsearch 9.2.4-java → 9.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
- data/CHANGELOG.md +3 -0
- data/docs/index.asciidoc +104 -2
- data/lib/logstash/outputs/elasticsearch.rb +4 -0
- data/lib/logstash/outputs/elasticsearch/common.rb +8 -5
- data/lib/logstash/outputs/elasticsearch/common_configs.rb +23 -1
- data/lib/logstash/outputs/elasticsearch/default-ilm-policy.json +14 -0
- data/lib/logstash/outputs/elasticsearch/http_client.rb +47 -2
- data/lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb +3 -3
- data/lib/logstash/outputs/elasticsearch/ilm.rb +84 -0
- data/lib/logstash/outputs/elasticsearch/template_manager.rb +21 -1
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/es_spec_helper.rb +70 -0
- data/spec/fixtures/template-with-policy-es6x.json +48 -0
- data/spec/fixtures/template-with-policy-es7x.json +46 -0
- data/spec/integration/outputs/create_spec.rb +1 -1
- data/spec/integration/outputs/ilm_spec.rb +542 -0
- data/spec/integration/outputs/ingest_pipeline_spec.rb +2 -2
- data/spec/integration/outputs/no_es_on_startup_spec.rb +2 -2
- data/spec/integration/outputs/retry_spec.rb +3 -3
- data/spec/integration/outputs/templates_5x_spec.rb +7 -7
- data/spec/integration/outputs/templates_spec.rb +7 -7
- data/spec/support/elasticsearch/api/actions/delete_ilm_policy.rb +19 -0
- data/spec/support/elasticsearch/api/actions/get_alias.rb +18 -0
- data/spec/support/elasticsearch/api/actions/get_ilm_policy.rb +18 -0
- data/spec/support/elasticsearch/api/actions/put_alias.rb +24 -0
- data/spec/support/elasticsearch/api/actions/put_ilm_policy.rb +25 -0
- metadata +20 -2
@@ -54,13 +54,13 @@ if ESHelper.es_version_satisfies?(">= 5")
|
|
54
54
|
#Wait or fail until everything's indexed.
|
55
55
|
Stud::try(20.times) do
|
56
56
|
r = @es.search
|
57
|
-
expect(r
|
57
|
+
expect(r).to have_hits(1)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
it "indexes using the proper pipeline" do
|
62
62
|
results = @es.search(:index => 'logstash-*', :q => "message:\"netcat\"")
|
63
|
-
expect(results
|
63
|
+
expect(results).to have_hits(1)
|
64
64
|
expect(results["hits"]["hits"][0]["_source"]["response"]).to eq("200")
|
65
65
|
expect(results["hits"]["hits"][0]["_source"]["bytes"]).to eq("182")
|
66
66
|
expect(results["hits"]["hits"][0]["_source"]["verb"]).to eq("GET")
|
@@ -39,7 +39,7 @@ describe "elasticsearch is down on startup", :integration => true do
|
|
39
39
|
subject.multi_receive([event1, event2])
|
40
40
|
@es.indices.refresh
|
41
41
|
r = @es.search
|
42
|
-
expect(r
|
42
|
+
expect(r).to have_hits(2)
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'should ingest events when Elasticsearch recovers after documents are sent' do
|
@@ -52,7 +52,7 @@ describe "elasticsearch is down on startup", :integration => true do
|
|
52
52
|
subject.multi_receive([event1, event2])
|
53
53
|
@es.indices.refresh
|
54
54
|
r = @es.search
|
55
|
-
expect(r
|
55
|
+
expect(r).to have_hits(2)
|
56
56
|
end
|
57
57
|
|
58
58
|
end
|
@@ -143,7 +143,7 @@ describe "failures in bulk class expected behavior", :integration => true do
|
|
143
143
|
|
144
144
|
@es.indices.refresh
|
145
145
|
r = @es.search
|
146
|
-
expect(r
|
146
|
+
expect(r).to have_hits(0)
|
147
147
|
end
|
148
148
|
|
149
149
|
it "successful requests should not be appended to retry queue" do
|
@@ -154,7 +154,7 @@ describe "failures in bulk class expected behavior", :integration => true do
|
|
154
154
|
subject.close
|
155
155
|
@es.indices.refresh
|
156
156
|
r = @es.search
|
157
|
-
expect(r
|
157
|
+
expect(r).to have_hits(1)
|
158
158
|
end
|
159
159
|
|
160
160
|
it "should only index proper events" do
|
@@ -164,6 +164,6 @@ describe "failures in bulk class expected behavior", :integration => true do
|
|
164
164
|
|
165
165
|
@es.indices.refresh
|
166
166
|
r = @es.search
|
167
|
-
expect(r
|
167
|
+
expect(r).to have_hits(1)
|
168
168
|
end
|
169
169
|
end
|
@@ -41,19 +41,19 @@ if ESHelper.es_version_satisfies?(">= 5")
|
|
41
41
|
# Wait or fail until everything's indexed.
|
42
42
|
Stud::try(20.times) do
|
43
43
|
r = @es.search
|
44
|
-
expect(r
|
44
|
+
expect(r).to have_hits(8)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
it "permits phrase searching on string fields" do
|
49
49
|
results = @es.search(:q => "message:\"sample message\"")
|
50
|
-
expect(results
|
50
|
+
expect(results).to have_hits(1)
|
51
51
|
expect(results["hits"]["hits"][0]["_source"]["message"]).to eq("sample message here")
|
52
52
|
end
|
53
53
|
|
54
54
|
it "numbers dynamically map to a numeric type and permit range queries" do
|
55
55
|
results = @es.search(:q => "somevalue:[5 TO 105]")
|
56
|
-
expect(results
|
56
|
+
expect(results).to have_hits(2)
|
57
57
|
|
58
58
|
values = results["hits"]["hits"].collect { |r| r["_source"]["somevalue"] }
|
59
59
|
expect(values).to include(10)
|
@@ -63,22 +63,22 @@ if ESHelper.es_version_satisfies?(">= 5")
|
|
63
63
|
|
64
64
|
it "does not create .keyword field for top-level message field" do
|
65
65
|
results = @es.search(:q => "message.keyword:\"sample message here\"")
|
66
|
-
expect(results
|
66
|
+
expect(results).to have_hits(0)
|
67
67
|
end
|
68
68
|
|
69
69
|
it "creates .keyword field for nested message fields" do
|
70
70
|
results = @es.search(:q => "somemessage.message.keyword:\"sample nested message here\"")
|
71
|
-
expect(results
|
71
|
+
expect(results).to have_hits(1)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "creates .keyword field from any string field which is not_analyzed" do
|
75
75
|
results = @es.search(:q => "country.keyword:\"us\"")
|
76
|
-
expect(results
|
76
|
+
expect(results).to have_hits(1)
|
77
77
|
expect(results["hits"]["hits"][0]["_source"]["country"]).to eq("us")
|
78
78
|
|
79
79
|
# partial or terms should not work.
|
80
80
|
results = @es.search(:q => "country.keyword:\"u\"")
|
81
|
-
expect(results
|
81
|
+
expect(results).to have_hits(0)
|
82
82
|
end
|
83
83
|
|
84
84
|
it "make [geoip][location] a geo_point" do
|
@@ -41,19 +41,19 @@ if ESHelper.es_version_satisfies?("< 5")
|
|
41
41
|
# Wait or fail until everything's indexed.
|
42
42
|
Stud::try(20.times) do
|
43
43
|
r = @es.search
|
44
|
-
expect(r
|
44
|
+
expect(r).to have_hits(8)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
it "permits phrase searching on string fields" do
|
49
49
|
results = @es.search(:q => "message:\"sample message\"")
|
50
|
-
expect(results
|
50
|
+
expect(results).to have_hits(1)
|
51
51
|
expect(results["hits"]["hits"][0]["_source"]["message"]).to eq("sample message here")
|
52
52
|
end
|
53
53
|
|
54
54
|
it "numbers dynamically map to a numeric type and permit range queries" do
|
55
55
|
results = @es.search(:q => "somevalue:[5 TO 105]")
|
56
|
-
expect(results
|
56
|
+
expect(results).to have_hits(2)
|
57
57
|
|
58
58
|
values = results["hits"]["hits"].collect { |r| r["_source"]["somevalue"] }
|
59
59
|
expect(values).to include(10)
|
@@ -63,22 +63,22 @@ if ESHelper.es_version_satisfies?("< 5")
|
|
63
63
|
|
64
64
|
it "does not create .raw field for the message field" do
|
65
65
|
results = @es.search(:q => "message.raw:\"sample message here\"")
|
66
|
-
expect(results
|
66
|
+
expect(results).to have_hits(0)
|
67
67
|
end
|
68
68
|
|
69
69
|
it "creates .raw field for nested message fields" do
|
70
70
|
results = @es.search(:q => "somemessage.message.raw:\"sample nested message here\"")
|
71
|
-
expect(results
|
71
|
+
expect(results).to have_hits(1)
|
72
72
|
end
|
73
73
|
|
74
74
|
it "creates .raw field from any string field which is not_analyzed" do
|
75
75
|
results = @es.search(:q => "country.raw:\"us\"")
|
76
|
-
expect(results
|
76
|
+
expect(results).to have_hits(1)
|
77
77
|
expect(results["hits"]["hits"][0]["_source"]["country"]).to eq("us")
|
78
78
|
|
79
79
|
# partial or terms should not work.
|
80
80
|
results = @es.search(:q => "country.raw:\"u\"")
|
81
|
-
expect(results
|
81
|
+
expect(results).to have_hits(0)
|
82
82
|
end
|
83
83
|
|
84
84
|
it "make [geoip][location] a geo_point" do
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
2
|
+
# or more contributor license agreements. Licensed under the Elastic License;
|
3
|
+
# you may not use this file except in compliance with the Elastic License.
|
4
|
+
|
5
|
+
module Elasticsearch
|
6
|
+
module API
|
7
|
+
module Actions
|
8
|
+
|
9
|
+
# Update the password of the specified user
|
10
|
+
def delete_ilm_policy(arguments={})
|
11
|
+
method = HTTP_DELETE
|
12
|
+
path = Utils.__pathify '_ilm/policy/',
|
13
|
+
Utils.__escape(arguments[:name])
|
14
|
+
params = {}
|
15
|
+
perform_request(method, path, params, nil).body
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
2
|
+
# or more contributor license agreements. Licensed under the Elastic License;
|
3
|
+
# you may not use this file except in compliance with the Elastic License.
|
4
|
+
|
5
|
+
module Elasticsearch
|
6
|
+
module API
|
7
|
+
module Actions
|
8
|
+
|
9
|
+
# Retrieve the list of index lifecycle management policies
|
10
|
+
def get_alias(arguments={})
|
11
|
+
method = HTTP_GET
|
12
|
+
path = Utils.__pathify '_alias', Utils.__escape(arguments[:name])
|
13
|
+
params = {}
|
14
|
+
perform_request(method, path, params, nil).body
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
2
|
+
# or more contributor license agreements. Licensed under the Elastic License;
|
3
|
+
# you may not use this file except in compliance with the Elastic License.
|
4
|
+
|
5
|
+
module Elasticsearch
|
6
|
+
module API
|
7
|
+
module Actions
|
8
|
+
|
9
|
+
# Retrieve the list of index lifecycle management policies
|
10
|
+
def get_ilm_policy(arguments={})
|
11
|
+
method = HTTP_GET
|
12
|
+
path = Utils.__pathify '_ilm/policy', Utils.__escape(arguments[:name])
|
13
|
+
params = {}
|
14
|
+
perform_request(method, path, params, nil).body
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
2
|
+
# or more contributor license agreements. Licensed under the Elastic License;
|
3
|
+
# you may not use this file except in compliance with the Elastic License.
|
4
|
+
|
5
|
+
module Elasticsearch
|
6
|
+
module API
|
7
|
+
module Actions
|
8
|
+
|
9
|
+
# @option arguments [String] :name The name of the alias (*Required*)
|
10
|
+
# @option arguments [Hash] :The alias definition(*Required*)
|
11
|
+
|
12
|
+
def put_alias(arguments={})
|
13
|
+
raise ArgumentError, "Required argument 'name' missing" unless arguments[:name]
|
14
|
+
raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
|
15
|
+
method = HTTP_PUT
|
16
|
+
path = Utils.__pathify Utils.__escape(arguments[:name])
|
17
|
+
|
18
|
+
params = Utils.__validate_and_extract_params arguments
|
19
|
+
body = arguments[:body]
|
20
|
+
perform_request(method, path, params, body.to_json).body
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
2
|
+
# or more contributor license agreements. Licensed under the Elastic License;
|
3
|
+
# you may not use this file except in compliance with the Elastic License.
|
4
|
+
|
5
|
+
module Elasticsearch
|
6
|
+
module API
|
7
|
+
module Actions
|
8
|
+
|
9
|
+
# @option arguments [String] :name The name of the policy (*Required*)
|
10
|
+
# @option arguments [Hash] :body The policy definition (*Required*)
|
11
|
+
|
12
|
+
def put_ilm_policy(arguments={})
|
13
|
+
raise ArgumentError, "Required argument 'name' missing" unless arguments[:name]
|
14
|
+
raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
|
15
|
+
method = HTTP_PUT
|
16
|
+
path = Utils.__pathify '_ilm/policy/', Utils.__escape(arguments[:name])
|
17
|
+
|
18
|
+
params = Utils.__validate_and_extract_params arguments
|
19
|
+
|
20
|
+
body = arguments[:body]
|
21
|
+
perform_request(method, path, params, body.to_json).body
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
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: 9.
|
4
|
+
version: 9.3.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,6 +158,7 @@ files:
|
|
158
158
|
- lib/logstash/outputs/elasticsearch.rb
|
159
159
|
- lib/logstash/outputs/elasticsearch/common.rb
|
160
160
|
- lib/logstash/outputs/elasticsearch/common_configs.rb
|
161
|
+
- lib/logstash/outputs/elasticsearch/default-ilm-policy.json
|
161
162
|
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es2x.json
|
162
163
|
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es5x.json
|
163
164
|
- lib/logstash/outputs/elasticsearch/elasticsearch-template-es6x.json
|
@@ -166,6 +167,7 @@ files:
|
|
166
167
|
- lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb
|
167
168
|
- lib/logstash/outputs/elasticsearch/http_client/pool.rb
|
168
169
|
- lib/logstash/outputs/elasticsearch/http_client_builder.rb
|
170
|
+
- lib/logstash/outputs/elasticsearch/ilm.rb
|
169
171
|
- lib/logstash/outputs/elasticsearch/template_manager.rb
|
170
172
|
- logstash-output-elasticsearch.gemspec
|
171
173
|
- spec/es_spec_helper.rb
|
@@ -179,6 +181,8 @@ files:
|
|
179
181
|
- spec/fixtures/scripts/painless/scripted_update.painless
|
180
182
|
- spec/fixtures/scripts/painless/scripted_update_nested.painless
|
181
183
|
- spec/fixtures/scripts/painless/scripted_upsert.painless
|
184
|
+
- spec/fixtures/template-with-policy-es6x.json
|
185
|
+
- spec/fixtures/template-with-policy-es7x.json
|
182
186
|
- spec/fixtures/test_certs/ca/ca.crt
|
183
187
|
- spec/fixtures/test_certs/ca/ca.key
|
184
188
|
- spec/fixtures/test_certs/test.crt
|
@@ -187,6 +191,7 @@ files:
|
|
187
191
|
- spec/integration/outputs/create_spec.rb
|
188
192
|
- spec/integration/outputs/delete_spec.rb
|
189
193
|
- spec/integration/outputs/groovy_update_spec.rb
|
194
|
+
- spec/integration/outputs/ilm_spec.rb
|
190
195
|
- spec/integration/outputs/index_spec.rb
|
191
196
|
- spec/integration/outputs/index_version_spec.rb
|
192
197
|
- spec/integration/outputs/ingest_pipeline_spec.rb
|
@@ -200,6 +205,11 @@ files:
|
|
200
205
|
- spec/integration/outputs/templates_5x_spec.rb
|
201
206
|
- spec/integration/outputs/templates_spec.rb
|
202
207
|
- spec/integration/outputs/update_spec.rb
|
208
|
+
- spec/support/elasticsearch/api/actions/delete_ilm_policy.rb
|
209
|
+
- spec/support/elasticsearch/api/actions/get_alias.rb
|
210
|
+
- spec/support/elasticsearch/api/actions/get_ilm_policy.rb
|
211
|
+
- spec/support/elasticsearch/api/actions/put_alias.rb
|
212
|
+
- spec/support/elasticsearch/api/actions/put_ilm_policy.rb
|
203
213
|
- spec/unit/http_client_builder_spec.rb
|
204
214
|
- spec/unit/outputs/elasticsearch/http_client/manticore_adapter_spec.rb
|
205
215
|
- spec/unit/outputs/elasticsearch/http_client/pool_spec.rb
|
@@ -247,6 +257,8 @@ test_files:
|
|
247
257
|
- spec/fixtures/scripts/painless/scripted_update.painless
|
248
258
|
- spec/fixtures/scripts/painless/scripted_update_nested.painless
|
249
259
|
- spec/fixtures/scripts/painless/scripted_upsert.painless
|
260
|
+
- spec/fixtures/template-with-policy-es6x.json
|
261
|
+
- spec/fixtures/template-with-policy-es7x.json
|
250
262
|
- spec/fixtures/test_certs/ca/ca.crt
|
251
263
|
- spec/fixtures/test_certs/ca/ca.key
|
252
264
|
- spec/fixtures/test_certs/test.crt
|
@@ -255,6 +267,7 @@ test_files:
|
|
255
267
|
- spec/integration/outputs/create_spec.rb
|
256
268
|
- spec/integration/outputs/delete_spec.rb
|
257
269
|
- spec/integration/outputs/groovy_update_spec.rb
|
270
|
+
- spec/integration/outputs/ilm_spec.rb
|
258
271
|
- spec/integration/outputs/index_spec.rb
|
259
272
|
- spec/integration/outputs/index_version_spec.rb
|
260
273
|
- spec/integration/outputs/ingest_pipeline_spec.rb
|
@@ -268,6 +281,11 @@ test_files:
|
|
268
281
|
- spec/integration/outputs/templates_5x_spec.rb
|
269
282
|
- spec/integration/outputs/templates_spec.rb
|
270
283
|
- spec/integration/outputs/update_spec.rb
|
284
|
+
- spec/support/elasticsearch/api/actions/delete_ilm_policy.rb
|
285
|
+
- spec/support/elasticsearch/api/actions/get_alias.rb
|
286
|
+
- spec/support/elasticsearch/api/actions/get_ilm_policy.rb
|
287
|
+
- spec/support/elasticsearch/api/actions/put_alias.rb
|
288
|
+
- spec/support/elasticsearch/api/actions/put_ilm_policy.rb
|
271
289
|
- spec/unit/http_client_builder_spec.rb
|
272
290
|
- spec/unit/outputs/elasticsearch/http_client/manticore_adapter_spec.rb
|
273
291
|
- spec/unit/outputs/elasticsearch/http_client/pool_spec.rb
|