logstash-output-elasticsearch 10.8.6-java → 11.0.3-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 +17 -0
- data/docs/index.asciidoc +132 -22
- data/lib/logstash/outputs/elasticsearch.rb +125 -64
- data/lib/logstash/outputs/elasticsearch/data_stream_support.rb +233 -0
- data/lib/logstash/outputs/elasticsearch/http_client.rb +9 -7
- data/lib/logstash/outputs/elasticsearch/http_client/pool.rb +49 -62
- data/lib/logstash/outputs/elasticsearch/ilm.rb +13 -45
- data/lib/logstash/outputs/elasticsearch/license_checker.rb +26 -23
- data/lib/logstash/outputs/elasticsearch/template_manager.rb +4 -6
- data/lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-8x.json +1 -0
- data/lib/logstash/plugin_mixins/elasticsearch/api_configs.rb +157 -153
- data/lib/logstash/plugin_mixins/elasticsearch/common.rb +71 -58
- data/logstash-output-elasticsearch.gemspec +3 -3
- data/spec/es_spec_helper.rb +7 -12
- data/spec/fixtures/_nodes/{5x_6x.json → 6x.json} +5 -5
- data/spec/integration/outputs/compressed_indexing_spec.rb +47 -46
- data/spec/integration/outputs/data_stream_spec.rb +61 -0
- data/spec/integration/outputs/delete_spec.rb +49 -51
- data/spec/integration/outputs/ilm_spec.rb +236 -248
- data/spec/integration/outputs/index_spec.rb +5 -2
- data/spec/integration/outputs/index_version_spec.rb +78 -82
- data/spec/integration/outputs/ingest_pipeline_spec.rb +58 -58
- data/spec/integration/outputs/painless_update_spec.rb +74 -164
- data/spec/integration/outputs/parent_spec.rb +67 -75
- data/spec/integration/outputs/retry_spec.rb +6 -6
- data/spec/integration/outputs/sniffer_spec.rb +15 -54
- data/spec/integration/outputs/templates_spec.rb +79 -81
- data/spec/integration/outputs/update_spec.rb +99 -101
- data/spec/spec_helper.rb +10 -0
- data/spec/unit/outputs/elasticsearch/data_stream_support_spec.rb +528 -0
- data/spec/unit/outputs/elasticsearch/http_client/manticore_adapter_spec.rb +1 -0
- data/spec/unit/outputs/elasticsearch/http_client/pool_spec.rb +36 -29
- data/spec/unit/outputs/elasticsearch/http_client_spec.rb +2 -3
- data/spec/unit/outputs/elasticsearch/template_manager_spec.rb +10 -12
- data/spec/unit/outputs/elasticsearch_proxy_spec.rb +1 -2
- data/spec/unit/outputs/elasticsearch_spec.rb +176 -41
- data/spec/unit/outputs/elasticsearch_ssl_spec.rb +1 -2
- data/spec/unit/outputs/error_whitelist_spec.rb +3 -2
- data/spec/unit/outputs/license_check_spec.rb +0 -16
- metadata +29 -36
- data/lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-2x.json +0 -95
- data/lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-5x.json +0 -46
- data/spec/fixtures/_nodes/2x_1x.json +0 -27
- data/spec/fixtures/scripts/groovy/scripted_update.groovy +0 -2
- data/spec/fixtures/scripts/groovy/scripted_update_nested.groovy +0 -2
- data/spec/fixtures/scripts/groovy/scripted_upsert.groovy +0 -2
- data/spec/integration/outputs/groovy_update_spec.rb +0 -150
- data/spec/integration/outputs/templates_5x_spec.rb +0 -98
@@ -12,6 +12,7 @@ describe "whitelisting error types in expected behavior" do
|
|
12
12
|
before :each do
|
13
13
|
allow(subject.logger).to receive(:warn)
|
14
14
|
allow(subject).to receive(:maximum_seen_major_version).and_return(0)
|
15
|
+
allow(subject).to receive(:finish_register)
|
15
16
|
|
16
17
|
subject.register
|
17
18
|
|
@@ -39,7 +40,7 @@ describe "whitelisting error types in expected behavior" do
|
|
39
40
|
|
40
41
|
describe "when failure logging is enabled for everything" do
|
41
42
|
it "should log a failure on the action" do
|
42
|
-
expect(subject.logger).to have_received(:warn).with("Failed action
|
43
|
+
expect(subject.logger).to have_received(:warn).with("Failed action", anything)
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
@@ -47,7 +48,7 @@ describe "whitelisting error types in expected behavior" do
|
|
47
48
|
let(:settings) { super().merge("failure_type_logging_whitelist" => ["document_already_exists_exception"]) }
|
48
49
|
|
49
50
|
it "should log a failure on the action" do
|
50
|
-
expect(subject.logger).not_to have_received(:warn).with("Failed action
|
51
|
+
expect(subject.logger).not_to have_received(:warn).with("Failed action", anything)
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
@@ -14,22 +14,6 @@ describe LogStash::Outputs::ElasticSearch::LicenseChecker do
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
context "LicenseChecker API required by Pool specs" do
|
18
|
-
subject { described_class }
|
19
|
-
|
20
|
-
it "defines the oss? method" do
|
21
|
-
expect(subject.instance_methods).to include(:oss?)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "defines the valid_es_license? method" do
|
25
|
-
expect(subject.instance_methods).to include(:valid_es_license?)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "defines the log_license_deprecation_warn method" do
|
29
|
-
expect(subject.instance_methods).to include(:log_license_deprecation_warn)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
17
|
context "Pool class API required by the LicenseChecker" do
|
34
18
|
subject { LogStash::Outputs::ElasticSearch::HttpClient::Pool }
|
35
19
|
|
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:
|
4
|
+
version: 11.0.3
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-20 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.
|
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.
|
29
|
+
version: 0.7.1
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.0.0
|
@@ -50,20 +50,6 @@ dependencies:
|
|
50
50
|
- - "~>"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '0.0'
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
55
|
-
requirements:
|
56
|
-
- - "~>"
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
version: '0.6'
|
59
|
-
name: cabin
|
60
|
-
prerelease: false
|
61
|
-
type: :runtime
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0.6'
|
67
53
|
- !ruby/object:Gem::Dependency
|
68
54
|
requirement: !ruby/object:Gem::Requirement
|
69
55
|
requirements:
|
@@ -140,6 +126,20 @@ dependencies:
|
|
140
126
|
- - ">="
|
141
127
|
- !ruby/object:Gem::Version
|
142
128
|
version: '0'
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - "~>"
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0.6'
|
135
|
+
name: cabin
|
136
|
+
prerelease: false
|
137
|
+
type: :development
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0.6'
|
143
143
|
- !ruby/object:Gem::Dependency
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
145
145
|
requirements:
|
@@ -170,6 +170,7 @@ files:
|
|
170
170
|
- README.md
|
171
171
|
- docs/index.asciidoc
|
172
172
|
- lib/logstash/outputs/elasticsearch.rb
|
173
|
+
- lib/logstash/outputs/elasticsearch/data_stream_support.rb
|
173
174
|
- lib/logstash/outputs/elasticsearch/default-ilm-policy.json
|
174
175
|
- lib/logstash/outputs/elasticsearch/http_client.rb
|
175
176
|
- lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb
|
@@ -178,26 +179,21 @@ files:
|
|
178
179
|
- lib/logstash/outputs/elasticsearch/ilm.rb
|
179
180
|
- lib/logstash/outputs/elasticsearch/license_checker.rb
|
180
181
|
- lib/logstash/outputs/elasticsearch/template_manager.rb
|
181
|
-
- lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-2x.json
|
182
|
-
- lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-5x.json
|
183
182
|
- lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-6x.json
|
184
183
|
- lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-7x.json
|
185
184
|
- lib/logstash/outputs/elasticsearch/templates/ecs-disabled/elasticsearch-8x.json
|
186
185
|
- lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-6x.json
|
187
186
|
- lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-7x.json
|
187
|
+
- lib/logstash/outputs/elasticsearch/templates/ecs-v1/elasticsearch-8x.json
|
188
188
|
- lib/logstash/plugin_mixins/elasticsearch/api_configs.rb
|
189
189
|
- lib/logstash/plugin_mixins/elasticsearch/common.rb
|
190
190
|
- lib/logstash/plugin_mixins/elasticsearch/noop_license_checker.rb
|
191
191
|
- logstash-output-elasticsearch.gemspec
|
192
192
|
- spec/es_spec_helper.rb
|
193
|
-
- spec/fixtures/_nodes/
|
194
|
-
- spec/fixtures/_nodes/5x_6x.json
|
193
|
+
- spec/fixtures/_nodes/6x.json
|
195
194
|
- spec/fixtures/_nodes/7x.json
|
196
195
|
- spec/fixtures/htpasswd
|
197
196
|
- spec/fixtures/nginx_reverse_proxy.conf
|
198
|
-
- spec/fixtures/scripts/groovy/scripted_update.groovy
|
199
|
-
- spec/fixtures/scripts/groovy/scripted_update_nested.groovy
|
200
|
-
- spec/fixtures/scripts/groovy/scripted_upsert.groovy
|
201
197
|
- spec/fixtures/scripts/painless/scripted_update.painless
|
202
198
|
- spec/fixtures/scripts/painless/scripted_update_nested.painless
|
203
199
|
- spec/fixtures/scripts/painless/scripted_upsert.painless
|
@@ -210,8 +206,8 @@ files:
|
|
210
206
|
- spec/fixtures/test_certs/test.key
|
211
207
|
- spec/integration/outputs/compressed_indexing_spec.rb
|
212
208
|
- spec/integration/outputs/create_spec.rb
|
209
|
+
- spec/integration/outputs/data_stream_spec.rb
|
213
210
|
- spec/integration/outputs/delete_spec.rb
|
214
|
-
- spec/integration/outputs/groovy_update_spec.rb
|
215
211
|
- spec/integration/outputs/ilm_spec.rb
|
216
212
|
- spec/integration/outputs/index_spec.rb
|
217
213
|
- spec/integration/outputs/index_version_spec.rb
|
@@ -223,15 +219,16 @@ files:
|
|
223
219
|
- spec/integration/outputs/retry_spec.rb
|
224
220
|
- spec/integration/outputs/routing_spec.rb
|
225
221
|
- spec/integration/outputs/sniffer_spec.rb
|
226
|
-
- spec/integration/outputs/templates_5x_spec.rb
|
227
222
|
- spec/integration/outputs/templates_spec.rb
|
228
223
|
- spec/integration/outputs/update_spec.rb
|
224
|
+
- spec/spec_helper.rb
|
229
225
|
- spec/support/elasticsearch/api/actions/delete_ilm_policy.rb
|
230
226
|
- spec/support/elasticsearch/api/actions/get_alias.rb
|
231
227
|
- spec/support/elasticsearch/api/actions/get_ilm_policy.rb
|
232
228
|
- spec/support/elasticsearch/api/actions/put_alias.rb
|
233
229
|
- spec/support/elasticsearch/api/actions/put_ilm_policy.rb
|
234
230
|
- spec/unit/http_client_builder_spec.rb
|
231
|
+
- spec/unit/outputs/elasticsearch/data_stream_support_spec.rb
|
235
232
|
- spec/unit/outputs/elasticsearch/http_client/manticore_adapter_spec.rb
|
236
233
|
- spec/unit/outputs/elasticsearch/http_client/pool_spec.rb
|
237
234
|
- spec/unit/outputs/elasticsearch/http_client_spec.rb
|
@@ -262,21 +259,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
259
|
- !ruby/object:Gem::Version
|
263
260
|
version: '0'
|
264
261
|
requirements: []
|
265
|
-
|
266
|
-
rubygems_version: 2.6.13
|
262
|
+
rubygems_version: 3.1.6
|
267
263
|
signing_key:
|
268
264
|
specification_version: 4
|
269
265
|
summary: Stores logs in Elasticsearch
|
270
266
|
test_files:
|
271
267
|
- spec/es_spec_helper.rb
|
272
|
-
- spec/fixtures/_nodes/
|
273
|
-
- spec/fixtures/_nodes/5x_6x.json
|
268
|
+
- spec/fixtures/_nodes/6x.json
|
274
269
|
- spec/fixtures/_nodes/7x.json
|
275
270
|
- spec/fixtures/htpasswd
|
276
271
|
- spec/fixtures/nginx_reverse_proxy.conf
|
277
|
-
- spec/fixtures/scripts/groovy/scripted_update.groovy
|
278
|
-
- spec/fixtures/scripts/groovy/scripted_update_nested.groovy
|
279
|
-
- spec/fixtures/scripts/groovy/scripted_upsert.groovy
|
280
272
|
- spec/fixtures/scripts/painless/scripted_update.painless
|
281
273
|
- spec/fixtures/scripts/painless/scripted_update_nested.painless
|
282
274
|
- spec/fixtures/scripts/painless/scripted_upsert.painless
|
@@ -289,8 +281,8 @@ test_files:
|
|
289
281
|
- spec/fixtures/test_certs/test.key
|
290
282
|
- spec/integration/outputs/compressed_indexing_spec.rb
|
291
283
|
- spec/integration/outputs/create_spec.rb
|
284
|
+
- spec/integration/outputs/data_stream_spec.rb
|
292
285
|
- spec/integration/outputs/delete_spec.rb
|
293
|
-
- spec/integration/outputs/groovy_update_spec.rb
|
294
286
|
- spec/integration/outputs/ilm_spec.rb
|
295
287
|
- spec/integration/outputs/index_spec.rb
|
296
288
|
- spec/integration/outputs/index_version_spec.rb
|
@@ -302,15 +294,16 @@ test_files:
|
|
302
294
|
- spec/integration/outputs/retry_spec.rb
|
303
295
|
- spec/integration/outputs/routing_spec.rb
|
304
296
|
- spec/integration/outputs/sniffer_spec.rb
|
305
|
-
- spec/integration/outputs/templates_5x_spec.rb
|
306
297
|
- spec/integration/outputs/templates_spec.rb
|
307
298
|
- spec/integration/outputs/update_spec.rb
|
299
|
+
- spec/spec_helper.rb
|
308
300
|
- spec/support/elasticsearch/api/actions/delete_ilm_policy.rb
|
309
301
|
- spec/support/elasticsearch/api/actions/get_alias.rb
|
310
302
|
- spec/support/elasticsearch/api/actions/get_ilm_policy.rb
|
311
303
|
- spec/support/elasticsearch/api/actions/put_alias.rb
|
312
304
|
- spec/support/elasticsearch/api/actions/put_ilm_policy.rb
|
313
305
|
- spec/unit/http_client_builder_spec.rb
|
306
|
+
- spec/unit/outputs/elasticsearch/data_stream_support_spec.rb
|
314
307
|
- spec/unit/outputs/elasticsearch/http_client/manticore_adapter_spec.rb
|
315
308
|
- spec/unit/outputs/elasticsearch/http_client/pool_spec.rb
|
316
309
|
- spec/unit/outputs/elasticsearch/http_client_spec.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,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
|