logstash-output-elasticsearch 11.22.13-java → 12.0.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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -8
  3. data/docs/index.asciidoc +19 -106
  4. data/lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb +4 -1
  5. data/lib/logstash/outputs/elasticsearch/http_client/pool.rb +22 -11
  6. data/lib/logstash/outputs/elasticsearch/http_client.rb +29 -42
  7. data/lib/logstash/outputs/elasticsearch.rb +0 -47
  8. data/lib/logstash/plugin_mixins/elasticsearch/api_configs.rb +12 -28
  9. data/logstash-output-elasticsearch.gemspec +1 -1
  10. data/spec/es_spec_helper.rb +22 -34
  11. data/spec/fixtures/test_certs/GENERATED_AT +1 -1
  12. data/spec/fixtures/test_certs/ca.crt +27 -30
  13. data/spec/fixtures/test_certs/ca.der.sha256 +1 -1
  14. data/spec/fixtures/test_certs/renew.sh +3 -2
  15. data/spec/fixtures/test_certs/test.crt +28 -29
  16. data/spec/fixtures/test_certs/test.der.sha256 +1 -1
  17. data/spec/fixtures/test_certs/test.p12 +0 -0
  18. data/spec/integration/outputs/compressed_indexing_spec.rb +1 -3
  19. data/spec/integration/outputs/delete_spec.rb +4 -4
  20. data/spec/integration/outputs/ilm_spec.rb +12 -18
  21. data/spec/integration/outputs/index_spec.rb +2 -12
  22. data/spec/integration/outputs/index_version_spec.rb +7 -7
  23. data/spec/integration/outputs/painless_update_spec.rb +10 -11
  24. data/spec/integration/outputs/unsupported_actions_spec.rb +10 -15
  25. data/spec/integration/outputs/update_spec.rb +9 -11
  26. data/spec/spec_helper.rb +0 -8
  27. data/spec/support/elasticsearch/api/actions/get_alias.rb +18 -0
  28. data/spec/support/elasticsearch/api/actions/put_alias.rb +24 -0
  29. data/spec/unit/outputs/elasticsearch/http_client_spec.rb +0 -77
  30. data/spec/unit/outputs/elasticsearch_spec.rb +2 -82
  31. data/spec/unit/outputs/elasticsearch_ssl_spec.rb +22 -0
  32. data/spec/unit/outputs/error_whitelist_spec.rb +1 -0
  33. metadata +6 -2
@@ -1,32 +1,29 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIFdTCCA12gAwIBAgIUDITbsLT9hKser0ZzBZsxqgaZdWswDQYJKoZIhvcNAQEL
3
- BQAwSjELMAkGA1UEBhMCUFQxCzAJBgNVBAgMAk5BMQ8wDQYDVQQHDAZMaXNib24x
4
- DjAMBgNVBAoMBU15TGFiMQ0wCwYDVQQDDARyb290MB4XDTI1MDcyMjEwMTUwM1oX
5
- DTM1MDcyMDEwMTUwM1owSjELMAkGA1UEBhMCUFQxCzAJBgNVBAgMAk5BMQ8wDQYD
6
- VQQHDAZMaXNib24xDjAMBgNVBAoMBU15TGFiMQ0wCwYDVQQDDARyb290MIICIjAN
7
- BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy1MyoBa4fXtv1eo9rkvcc2qCdn3n
8
- z6C9w63tD+w4S9wNAmCTNn4bLCHl6vkkXaKiZg4eIPkmdxivhiZFAq5h8PoHVYjk
9
- W5C2EP86UDX9Eeq1tjbsnfdJo7rqujyBqXu+MetcpCR59VhHB187oOqpuFXoviwy
10
- LLwXNDnlMymgzflxa6+gAzG9JCoZnilhgqd81IaHMe+yx81LXG78vBvtWO7iM+Gn
11
- 7jcGQbASKYjmSbuM0LWfCOIe3EOxj+z3cApr+8uS1cpQrmcDeOMk6EBtFNWds4CD
12
- EW3Rhtf3zFb9pSqxyAFRWz0n8zJNEzBUontWya2HU90lCSxQBK7MRKVI+XT10yNN
13
- D4xfMkO3Qm9fxIgk+ZsGeDvwxJoJSGk5mKKLWXaYF89Z6PHbQj9IwJQ2bNvCbbD0
14
- kPnQm/aJfiXiB7gfUIgrX+itbWl1j3E8vS4piboAOwMLQHywaA0wFd4HpouiNjX8
15
- hPCaZ+l+T1z/JY98Luy0eAJhEC/kx8YCya/T/JrlWtZAYEmQWJjLWmifqfFSMJuC
16
- fREAGiNGgZ2GFjdAOKmDCZKAVnGvTrhEWvVu38yXcwmY9/nfmZLA92T+P/PDghlO
17
- +WbApbcXIwOHBgv/NfsnRzozMw8sR2LvdCPOavcQ0iuKvg7zrA3PzVhF9iSD1lfz
18
- Iokr0sEBStgKMncCAwEAAaNTMFEwHQYDVR0OBBYEFKFadJx46upif1BrhYZ0iu8o
19
- 2z8rMB8GA1UdIwQYMBaAFKFadJx46upif1BrhYZ0iu8o2z8rMA8GA1UdEwEB/wQF
20
- MAMBAf8wDQYJKoZIhvcNAQELBQADggIBAJi4FwYJz/RotoUpfrLZFf69RoI01Fje
21
- 8ITt8SR1Dx/1GTPEuqVVfx0EYtOoH6Gg3FwgSQ9GHRDIa1vkHY5S+FUSOW3pCoZE
22
- /kaLu9bmFxn+GntghvQEor+LzODuZKLXupaGcu1tA4fzyuI4jglVD2sGZtLk//CT
23
- Hd4tOWXo5k1Fj0jMnJq+2Htr8yBeSAO5ZNsvtAjOUU6pfDEwL9bgRzlKKFQQMUYo
24
- 6x1FvRDRXWjpzB/H+OSqOaoNLEB9FfEl8I7nn6uTenr5WxjPAOpwjZl9ObB/95xM
25
- p91abKbLQLev5I8npM9G3C/n01l3IzRs7DNHqGJTZO7frGhicD7/jNa+tkSioeJ2
26
- fIMqgDOvQE+gMxs19zw1tsI3+kqX7+ptTkU4Lan5V5ZKGfU8xtcVIlyRk5/yDUI5
27
- 1dfQVubs6z07s6De2qa92LFz9l8sT6QuVer+c/wPPhBdMwbzcHyUJIBjFaBpxH86
28
- F7Mr5Zr/+qcbHglAHow1lBqdZzimqGd1koqFRat/pFUFh0iqktMmpl+ZUCjyoQEX
29
- 93j8aMU2UQjYM8NJDE2aRculo9OEoqERYFM2m3nHvrtE7iZgddryLNH7ZmC1EquX
30
- MhZJ26GuZ2U4b9dAX858WTv0q1EF5S8KObMlxMU7IDk+cWlSD+puWliwfUKoTR/4
31
- JErSfjCSaRqh
2
+ MIIFDDCCAvQCAQEwDQYJKoZIhvcNAQELBQAwTDELMAkGA1UEBhMCUFQxCzAJBgNV
3
+ BAgMAk5BMQ8wDQYDVQQHDAZMaXNib24xDjAMBgNVBAoMBU15TGFiMQ8wDQYDVQQD
4
+ DAZSb290Q0EwHhcNMjQwNjI1MjA1MDU4WhcNMjUwNjI1MjA1MDU4WjBMMQswCQYD
5
+ VQQGEwJQVDELMAkGA1UECAwCTkExDzANBgNVBAcMBkxpc2JvbjEOMAwGA1UECgwF
6
+ TXlMYWIxDzANBgNVBAMMBlJvb3RDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
7
+ AgoCggIBAMtTMqAWuH17b9XqPa5L3HNqgnZ958+gvcOt7Q/sOEvcDQJgkzZ+Gywh
8
+ 5er5JF2iomYOHiD5JncYr4YmRQKuYfD6B1WI5FuQthD/OlA1/RHqtbY27J33SaO6
9
+ 6ro8gal7vjHrXKQkefVYRwdfO6DqqbhV6L4sMiy8FzQ55TMpoM35cWuvoAMxvSQq
10
+ GZ4pYYKnfNSGhzHvssfNS1xu/Lwb7Vju4jPhp+43BkGwEimI5km7jNC1nwjiHtxD
11
+ sY/s93AKa/vLktXKUK5nA3jjJOhAbRTVnbOAgxFt0YbX98xW/aUqscgBUVs9J/My
12
+ TRMwVKJ7Vsmth1PdJQksUASuzESlSPl09dMjTQ+MXzJDt0JvX8SIJPmbBng78MSa
13
+ CUhpOZiii1l2mBfPWejx20I/SMCUNmzbwm2w9JD50Jv2iX4l4ge4H1CIK1/orW1p
14
+ dY9xPL0uKYm6ADsDC0B8sGgNMBXeB6aLojY1/ITwmmfpfk9c/yWPfC7stHgCYRAv
15
+ 5MfGAsmv0/ya5VrWQGBJkFiYy1pon6nxUjCbgn0RABojRoGdhhY3QDipgwmSgFZx
16
+ r064RFr1bt/Ml3MJmPf535mSwPdk/j/zw4IZTvlmwKW3FyMDhwYL/zX7J0c6MzMP
17
+ LEdi73Qjzmr3ENIrir4O86wNz81YRfYkg9ZX8yKJK9LBAUrYCjJ3AgMBAAEwDQYJ
18
+ KoZIhvcNAQELBQADggIBABym9LMyS9W9lvpcH4OK1YLfBPJwrhZ+4keiriY4zWOo
19
+ pB+v2Q35neMMXSlTDpeIwPdMkqsh8VZprOWURF80JGvpJ6fBfi05rCDWp/ol1ZKi
20
+ snCA+dE2zDK7Z3+F0MbakT5oBi5WgkXSvRvlJEJ/gBD7WC1wq0kxCMK+M5w2RPAT
21
+ nnV/iozNBkwExxyJA7BpS6F/v0XjwK7fm5Kpql7zKlh5piZ2IVU0B60Sqskcb2mU
22
+ 90+1r9T06ekIW/Iz1jd5RWYziu0nbmDeKeKvGAICNU+evYXW+/5kKecMLuEvDCgS
23
+ ssbt/Hb510uLHhxfhN4SbvBl2zADsLC+2arf2ATIwD8ZXDDs04ayBsejV0ZwVrTZ
24
+ ExKqAys+B3tuIHGRqL5VukdmH6g6oJziYueohPBCOuSOzDd0FhppF4uXZS8DReSg
25
+ KieO2ZYfiA1gVRiY6jPx+r7J9I5kSS1gwr/e3zHJHa79ijMB1SSIswQUmgSMkwGh
26
+ sNyDNI9ZxgJan3v7kVargMt2LiNcXvVyTzPSYSXcY7SoebfpMprVIG7vZ9TZf+Uu
27
+ FQeOfxdLFuGTnpFrYmvOD3OIKfODlY5t+TNICg7A3eTUXeJPcdBBnuVCiQU6TCB5
28
+ H+69K5w54Q6a70sHZU1IWsGT8XtbUizPNQky+LAFsE/5oUnCqtypeEu4srcZK53x
32
29
  -----END CERTIFICATE-----
@@ -1 +1 @@
1
- d403930d5296f1515aadd3f730757e7719188b63a276687a3475128b746e4340
1
+ 8b23238088af65cbae6ee9c23821068d896ec1dad081e2a1035ff70866943247
@@ -3,7 +3,8 @@
3
3
  set -e
4
4
  cd "$(dirname "$0")"
5
5
 
6
- openssl req -x509 -new -nodes -key ca.key -subj "/C=PT/ST=NA/L=Lisbon/O=MyLab/CN=root" -sha256 -days 3650 -out ca.crt
6
+ openssl x509 -x509toreq -in ca.crt -signkey ca.key -out ca.csr
7
+ openssl x509 -req -days 365 -in ca.csr -set_serial 0x01 -signkey ca.key -out ca.crt && rm ca.csr
7
8
  openssl x509 -in ca.crt -outform der | sha256sum | awk '{print $1}' > ca.der.sha256
8
9
 
9
10
  openssl x509 -x509toreq -in test.crt -signkey test.key -out test.csr
@@ -12,4 +13,4 @@ openssl x509 -in test.crt -outform der | sha256sum | awk '{print $1}' > test.der
12
13
  openssl pkcs12 -export -inkey test.key -in test.crt -passout "pass:1234567890" -out test.p12
13
14
 
14
15
  # output ISO8601 timestamp to file
15
- date -Iseconds > GENERATED_AT
16
+ date -Iseconds > GENERATED_AT
@@ -1,31 +1,30 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- CgwFTXlMYWIxFjAUBgNVBAMMDWVsYXN0aWNzZWFyY2gwggIiMA0GCSqGSIb3DQEB
7
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- GM/ibfqNIPIo8dP2EDycSV6vIICqkxpCZZObNjfgKa0UN03qYi7xREhhEehXgU8H
30
- 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
29
+ Zytzb+8iSw==
31
30
  -----END CERTIFICATE-----
@@ -1 +1 @@
1
- 386ae6ef809d20ddfcc7ca68f480e82007c031b365c86cc58922cf1bd7238f89
1
+ 80329a197063dea8cf7905d10d221648bbdbc05b8fb1d4c2e384b831bc6590df
Binary file
@@ -36,9 +36,7 @@ end
36
36
  {
37
37
  "Content-Encoding" => "gzip",
38
38
  "Content-Type" => "application/json",
39
- 'x-elastic-product-origin' => 'logstash-output-elasticsearch',
40
- 'X-Elastic-Event-Count' => anything,
41
- 'X-Elastic-Uncompressed-Request-Length' => anything,
39
+ 'x-elastic-product-origin' => 'logstash-output-elasticsearch'
42
40
  }
43
41
  }
44
42
 
@@ -39,12 +39,12 @@ describe "Versioned delete", :integration => true do
39
39
  it "should ignore non-monotonic external version updates" do
40
40
  id = "ev2"
41
41
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_action" => "index", "message" => "foo", "my_version" => 99)])
42
- r = es.get(:index => 'logstash-delete', :id => id, :refresh => true)
42
+ r = es.get(:index => 'logstash-delete', :type => doc_type, :id => id, :refresh => true)
43
43
  expect(r['_version']).to eq(99)
44
44
  expect(r['_source']['message']).to eq('foo')
45
45
 
46
46
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_action" => "delete", "message" => "foo", "my_version" => 98)])
47
- r2 = es.get(:index => 'logstash-delete', :id => id, :refresh => true)
47
+ r2 = es.get(:index => 'logstash-delete', :type => doc_type, :id => id, :refresh => true)
48
48
  expect(r2['_version']).to eq(99)
49
49
  expect(r2['_source']['message']).to eq('foo')
50
50
  end
@@ -52,12 +52,12 @@ describe "Versioned delete", :integration => true do
52
52
  it "should commit monotonic external version updates" do
53
53
  id = "ev3"
54
54
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_action" => "index", "message" => "foo", "my_version" => 99)])
55
- r = es.get(:index => 'logstash-delete', :id => id, :refresh => true)
55
+ r = es.get(:index => 'logstash-delete', :type => doc_type, :id => id, :refresh => true)
56
56
  expect(r['_version']).to eq(99)
57
57
  expect(r['_source']['message']).to eq('foo')
58
58
 
59
59
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_action" => "delete", "message" => "foo", "my_version" => 100)])
60
- expect { es.get(:index => 'logstash-delete', :id => id, :refresh => true) }.to raise_error(get_expected_error_class)
60
+ expect { es.get(:index => 'logstash-delete', :type => doc_type, :id => id, :refresh => true) }.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
61
61
  end
62
62
  end
63
63
  end
@@ -102,7 +102,7 @@ shared_examples_for 'an ILM disabled Logstash' do
102
102
  it 'should not install the default policy' do
103
103
  subject.register
104
104
  sleep(1)
105
- expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(get_expected_error_class)
105
+ expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
106
106
  end
107
107
 
108
108
  it 'should not write the ILM settings into the template' do
@@ -282,12 +282,12 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
282
282
  subject.register
283
283
  sleep(1)
284
284
  expect(@es.indices.exists_alias(name: "logstash")).to be_truthy
285
- expect(@es.indices.get_alias(name: "logstash")).to include("logstash-000001")
285
+ expect(@es.get_alias(name: "logstash")).to include("logstash-000001")
286
286
  end
287
287
  end
288
288
 
289
289
  it 'should install it if it is not present' do
290
- expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(get_expected_error_class)
290
+ expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
291
291
  subject.register
292
292
  sleep(1)
293
293
  expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.not_to raise_error
@@ -298,7 +298,7 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
298
298
  subject.register
299
299
  sleep(1)
300
300
  expect(@es.indices.exists_alias(name: "logstash")).to be_truthy
301
- expect(@es.indices.get_alias(name: "logstash")).to include("logstash-#{todays_date}-000001")
301
+ expect(@es.get_alias(name: "logstash")).to include("logstash-#{todays_date}-000001")
302
302
  end
303
303
 
304
304
  it 'should ingest into a single index' do
@@ -340,14 +340,14 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
340
340
  let (:policy) { small_max_doc_policy }
341
341
 
342
342
  before do
343
- expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(get_expected_error_class)
343
+ expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
344
344
  put_policy(@es,ilm_policy_name, policy)
345
345
  end
346
346
 
347
347
  it 'should not install the default policy if it is not used' do
348
348
  subject.register
349
349
  sleep(1)
350
- expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(get_expected_error_class)
350
+ expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
351
351
  end
352
352
  end
353
353
 
@@ -357,14 +357,14 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
357
357
  let (:policy) { max_age_policy("1d") }
358
358
 
359
359
  before do
360
- expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(get_expected_error_class)
360
+ expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
361
361
  put_policy(@es,ilm_policy_name, policy)
362
362
  end
363
363
 
364
364
  it 'should not install the default policy if it is not used' do
365
365
  subject.register
366
366
  sleep(1)
367
- expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(get_expected_error_class)
367
+ expect{get_policy(@es, LogStash::Outputs::ElasticSearch::DEFAULT_POLICY)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
368
368
  end
369
369
  end
370
370
 
@@ -374,7 +374,7 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
374
374
  subject.register
375
375
  sleep(1)
376
376
  expect(@es.indices.exists_alias(name: expected_index)).to be_truthy
377
- expect(@es.indices.get_alias(name: expected_index)).to include("#{expected_index}-#{todays_date}-000001")
377
+ expect(@es.get_alias(name: expected_index)).to include("#{expected_index}-#{todays_date}-000001")
378
378
  end
379
379
 
380
380
  it 'should write the ILM settings into the template' do
@@ -443,18 +443,17 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
443
443
  subject.register
444
444
  sleep(1)
445
445
  expect(@es.indices.exists_alias(name: ilm_rollover_alias)).to be_truthy
446
- expect(@es.indices.get_alias(name: ilm_rollover_alias)).to include("#{ilm_rollover_alias}-#{todays_date}-000001")
446
+ expect(@es.get_alias(name: ilm_rollover_alias)).to include("#{ilm_rollover_alias}-#{todays_date}-000001")
447
447
  end
448
448
 
449
449
  context 'when the custom rollover alias already exists' do
450
450
  it 'should ignore the already exists error' do
451
451
  expect(@es.indices.exists_alias(name: ilm_rollover_alias)).to be_falsey
452
- @es.indices.create(index: "#{ilm_rollover_alias}-#{todays_date}-000001")
453
- @es.indices.put_alias(name: ilm_rollover_alias, index: "#{ilm_rollover_alias}-#{todays_date}-000001")
452
+ put_alias(@es, "#{ilm_rollover_alias}-#{todays_date}-000001", ilm_rollover_alias)
454
453
  expect(@es.indices.exists_alias(name: ilm_rollover_alias)).to be_truthy
455
454
  subject.register
456
455
  sleep(1)
457
- expect(@es.indices.get_alias(name: ilm_rollover_alias)).to include("#{ilm_rollover_alias}-#{todays_date}-000001")
456
+ expect(@es.get_alias(name: ilm_rollover_alias)).to include("#{ilm_rollover_alias}-#{todays_date}-000001")
458
457
  end
459
458
 
460
459
  end
@@ -533,8 +532,3 @@ describe 'Elasticsearch has index lifecycle management enabled', :integration =>
533
532
  end
534
533
 
535
534
  end
536
-
537
- def get_expected_error_class
538
- return Elastic::Transport::Transport::Errors::NotFound if elastic_ruby_v8_client_available?
539
- Elasticsearch::Transport::Transport::Errors::NotFound
540
- end
@@ -215,22 +215,12 @@ describe "indexing" do
215
215
 
216
216
  it "sets the correct content-type header" do
217
217
  expected_manticore_opts = {
218
- :headers => {
219
- "Content-Type" => "application/json",
220
- 'x-elastic-product-origin' => 'logstash-output-elasticsearch',
221
- 'X-Elastic-Event-Count' => anything,
222
- 'X-Elastic-Uncompressed-Request-Length' => anything
223
- },
218
+ :headers => {"Content-Type" => "application/json", 'x-elastic-product-origin' => 'logstash-output-elasticsearch'},
224
219
  :body => anything
225
220
  }
226
221
  if secure
227
222
  expected_manticore_opts = {
228
- :headers => {
229
- "Content-Type" => "application/json",
230
- 'x-elastic-product-origin' => 'logstash-output-elasticsearch',
231
- 'X-Elastic-Event-Count' => anything,
232
- 'X-Elastic-Uncompressed-Request-Length' => anything
233
- },
223
+ :headers => {"Content-Type" => "application/json", 'x-elastic-product-origin' => 'logstash-output-elasticsearch'},
234
224
  :body => anything,
235
225
  :auth => {
236
226
  :user => user,
@@ -36,11 +36,11 @@ describe "Versioned indexing", :integration => true do
36
36
 
37
37
  it "should default to ES version" do
38
38
  subject.multi_receive([LogStash::Event.new("my_id" => "123", "message" => "foo")])
39
- r = es.get(:index => 'logstash-index', :id => '123', :refresh => true)
39
+ r = es.get(:index => 'logstash-index', :type => doc_type, :id => "123", :refresh => true)
40
40
  expect(r["_version"]).to eq(1)
41
41
  expect(r["_source"]["message"]).to eq('foo')
42
42
  subject.multi_receive([LogStash::Event.new("my_id" => "123", "message" => "foobar")])
43
- r2 = es.get(:index => 'logstash-index', :id => '123', :refresh => true)
43
+ r2 = es.get(:index => 'logstash-index', :type => doc_type, :id => "123", :refresh => true)
44
44
  expect(r2["_version"]).to eq(2)
45
45
  expect(r2["_source"]["message"]).to eq('foobar')
46
46
  end
@@ -63,7 +63,7 @@ describe "Versioned indexing", :integration => true do
63
63
  it "should respect the external version" do
64
64
  id = "ev1"
65
65
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_version" => "99", "message" => "foo")])
66
- r = es.get(:index => 'logstash-index', :id => id, :refresh => true)
66
+ r = es.get(:index => 'logstash-index', :type => doc_type, :id => id, :refresh => true)
67
67
  expect(r["_version"]).to eq(99)
68
68
  expect(r["_source"]["message"]).to eq('foo')
69
69
  end
@@ -71,12 +71,12 @@ describe "Versioned indexing", :integration => true do
71
71
  it "should ignore non-monotonic external version updates" do
72
72
  id = "ev2"
73
73
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_version" => "99", "message" => "foo")])
74
- r = es.get(:index => 'logstash-index', :id => id, :refresh => true)
74
+ r = es.get(:index => 'logstash-index', :type => doc_type, :id => id, :refresh => true)
75
75
  expect(r["_version"]).to eq(99)
76
76
  expect(r["_source"]["message"]).to eq('foo')
77
77
 
78
78
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_version" => "98", "message" => "foo")])
79
- r2 = es.get(:index => 'logstash-index', :id => id, :refresh => true)
79
+ r2 = es.get(:index => 'logstash-index', :type => doc_type, :id => id, :refresh => true)
80
80
  expect(r2["_version"]).to eq(99)
81
81
  expect(r2["_source"]["message"]).to eq('foo')
82
82
  end
@@ -84,12 +84,12 @@ describe "Versioned indexing", :integration => true do
84
84
  it "should commit monotonic external version updates" do
85
85
  id = "ev3"
86
86
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_version" => "99", "message" => "foo")])
87
- r = es.get(:index => 'logstash-index', :id => id, :refresh => true)
87
+ r = es.get(:index => 'logstash-index', :type => doc_type, :id => id, :refresh => true)
88
88
  expect(r["_version"]).to eq(99)
89
89
  expect(r["_source"]["message"]).to eq('foo')
90
90
 
91
91
  subject.multi_receive([LogStash::Event.new("my_id" => id, "my_version" => "100", "message" => "foo")])
92
- r2 = es.get(:index => 'logstash-index', :id => id, :refresh => true)
92
+ r2 = es.get(:index => 'logstash-index', :type => doc_type, :id => id, :refresh => true)
93
93
  expect(r2["_version"]).to eq(100)
94
94
  expect(r2["_source"]["message"]).to eq('foo')
95
95
  end
@@ -22,12 +22,11 @@ describe "Update actions using painless scripts", :integration => true, :update_
22
22
  # This can fail if there are no indexes, ignore failure.
23
23
  @es.indices.delete(:index => "*") rescue nil
24
24
  @es.index(
25
- {
26
- :index => 'logstash-update',
27
- :id => '123',
28
- :body => { :message => 'Test', :counter => 1 },
29
- :refresh => true
30
- })
25
+ :index => 'logstash-update',
26
+ :type => doc_type,
27
+ :id => "123",
28
+ :body => { :message => 'Test', :counter => 1 }
29
+ )
31
30
  @es.indices.refresh
32
31
  end
33
32
 
@@ -47,7 +46,7 @@ describe "Update actions using painless scripts", :integration => true, :update_
47
46
  subject = get_es_output(plugin_parameters)
48
47
  subject.register
49
48
  subject.multi_receive([LogStash::Event.new("count" => 4 )])
50
- r = @es.get(:index => 'logstash-update', :id => "123", :refresh => true)
49
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
51
50
  expect(r["_source"]["counter"]).to eq(5)
52
51
  end
53
52
  end
@@ -58,7 +57,7 @@ describe "Update actions using painless scripts", :integration => true, :update_
58
57
  subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
59
58
  subject.register
60
59
  subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
61
- r = @es.get(:index => 'logstash-update', :id => "456", :refresh => true)
60
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
62
61
  expect(r["_source"]["message"]).to eq('upsert message')
63
62
  end
64
63
 
@@ -66,7 +65,7 @@ describe "Update actions using painless scripts", :integration => true, :update_
66
65
  subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
67
66
  subject.register
68
67
  subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
69
- r = @es.get(:index => 'logstash-update', :id => "456", :refresh => true)
68
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
70
69
  expect(r["_source"]["message"]).to eq('sample message here')
71
70
  end
72
71
 
@@ -83,7 +82,7 @@ describe "Update actions using painless scripts", :integration => true, :update_
83
82
  subject.register
84
83
 
85
84
  subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
86
- r = @es.get(:index => 'logstash-update', :id => "456", :refresh => true)
85
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
87
86
  expect(r["_source"]["message"]).to eq('upsert message')
88
87
  end
89
88
 
@@ -92,7 +91,7 @@ describe "Update actions using painless scripts", :integration => true, :update_
92
91
  subject.register
93
92
  subject.multi_receive([LogStash::Event.new("counter" => 1)])
94
93
  @es.indices.refresh
95
- r = @es.get(:index => 'logstash-update', :id => "456", :refresh => true)
94
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
96
95
  expect(r["_source"]["counter"]).to eq(1)
97
96
  end
98
97
  end
@@ -27,21 +27,16 @@ describe "Unsupported actions testing...", :integration => true do
27
27
  @es.indices.delete(:index => "*") rescue nil
28
28
  # index single doc for update purpose
29
29
  @es.index(
30
- {
31
- :index => INDEX,
32
- :id => '2',
33
- :body => { :message => 'Test to doc indexing', :counter => 1 },
34
- :refresh => true
35
- }
30
+ :index => INDEX,
31
+ :type => doc_type,
32
+ :id => "2",
33
+ :body => { :message => 'Test to doc indexing', :counter => 1 }
36
34
  )
37
-
38
35
  @es.index(
39
- {
40
- :index => INDEX,
41
- :id => '3',
42
- :body => { :message => 'Test to doc deletion', :counter => 2 },
43
- :refresh => true
44
- }
36
+ :index => INDEX,
37
+ :type => doc_type,
38
+ :id => "3",
39
+ :body => { :message => 'Test to doc deletion', :counter => 2 }
45
40
  )
46
41
  @es.indices.refresh
47
42
  end
@@ -68,12 +63,12 @@ describe "Unsupported actions testing...", :integration => true do
68
63
  rejected_events = events.select { |event| !index_or_update.call(event) }
69
64
 
70
65
  indexed_events.each do |event|
71
- response = @es.get(:index => INDEX, :id => event.get("doc_id"), :refresh => true)
66
+ response = @es.get(:index => INDEX, :type => doc_type, :id => event.get("doc_id"), :refresh => true)
72
67
  expect(response['_source']['message']).to eq(event.get("message"))
73
68
  end
74
69
 
75
70
  rejected_events.each do |event|
76
- expect {@es.get(:index => INDEX, :id => event.get("doc_id"), :refresh => true)}.to raise_error(get_expected_error_class)
71
+ expect {@es.get(:index => INDEX, :type => doc_type, :id => event.get("doc_id"), :refresh => true)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
77
72
  end
78
73
  end
79
74
  end
@@ -22,12 +22,10 @@ describe "Update actions without scripts", :integration => true do
22
22
  # This can fail if there are no indexes, ignore failure.
23
23
  @es.indices.delete(:index => "*") rescue nil
24
24
  @es.index(
25
- {
26
- :index => 'logstash-update',
27
- :id => '123',
28
- :body => { :message => 'Test', :counter => 1 },
29
- :refresh => true
30
- }
25
+ :index => 'logstash-update',
26
+ :type => doc_type,
27
+ :id => "123",
28
+ :body => { :message => 'Test', :counter => 1 }
31
29
  )
32
30
  @es.indices.refresh
33
31
  end
@@ -42,14 +40,14 @@ describe "Update actions without scripts", :integration => true do
42
40
  subject = get_es_output({ 'document_id' => "456" } )
43
41
  subject.register
44
42
  subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
45
- expect {@es.get(:index => 'logstash-update', :id => '456', :refresh => true)}.to raise_error(get_expected_error_class)
43
+ expect {@es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
46
44
  end
47
45
 
48
46
  it "should update existing document" do
49
47
  subject = get_es_output({ 'document_id' => "123" })
50
48
  subject.register
51
49
  subject.multi_receive([LogStash::Event.new("message" => "updated message here")])
52
- r = @es.get(:index => 'logstash-update', :id => '123', :refresh => true)
50
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
53
51
  expect(r["_source"]["message"]).to eq('updated message here')
54
52
  end
55
53
 
@@ -59,7 +57,7 @@ describe "Update actions without scripts", :integration => true do
59
57
  subject = get_es_output({ 'document_id' => "123" })
60
58
  subject.register
61
59
  subject.multi_receive([LogStash::Event.new("data" => "updated message here", "message" => "foo")])
62
- r = @es.get(:index => 'logstash-update', :id => '123', :refresh => true)
60
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "123", :refresh => true)
63
61
  expect(r["_source"]["data"]).to eq('updated message here')
64
62
  expect(r["_source"]["message"]).to eq('foo')
65
63
  end
@@ -96,7 +94,7 @@ describe "Update actions without scripts", :integration => true do
96
94
  subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
97
95
  subject.register
98
96
  subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
99
- r = @es.get(:index => 'logstash-update', :id => '456', :refresh => true)
97
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
100
98
  expect(r["_source"]["message"]).to eq('upsert message')
101
99
  end
102
100
 
@@ -104,7 +102,7 @@ describe "Update actions without scripts", :integration => true do
104
102
  subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
105
103
  subject.register
106
104
  subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
107
- r = @es.get(:index => 'logstash-update', :id => '456', :refresh => true)
105
+ r = @es.get(:index => 'logstash-update', :type => doc_type, :id => "456", :refresh => true)
108
106
  expect(r["_source"]["message"]).to eq('sample message here')
109
107
  end
110
108
 
data/spec/spec_helper.rb CHANGED
@@ -8,11 +8,3 @@ end
8
8
  RSpec.configure do |config|
9
9
  config.include LogStash::Outputs::ElasticSearch::SpecHelper
10
10
  end
11
-
12
- # remove once plugin starts consuming elasticsearch-ruby v8 client
13
- def elastic_ruby_v8_client_available?
14
- Elasticsearch::Transport
15
- false
16
- rescue NameError # NameError: uninitialized constant Elasticsearch::Transport if Elastic Ruby client is not available
17
- true
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_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,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