logstash-output-elasticsearch 7.4.0-java → 7.4.1-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,18 +1,19 @@
1
1
  require_relative "../../../spec/es_spec_helper"
2
2
 
3
- describe "Ingest pipeline execution behavior", :integration => true, :version_greater_than_equal_to_5x => true do
4
- subject! do
5
- require "logstash/outputs/elasticsearch"
6
- settings = {
7
- "hosts" => "#{get_host_port()}",
8
- "pipeline" => "apache-logs"
9
- }
10
- next LogStash::Outputs::ElasticSearch.new(settings)
11
- end
3
+ if ESHelper.es_version_satisfies?(">= 5")
4
+ describe "Ingest pipeline execution behavior", :integration => true do
5
+ subject! do
6
+ require "logstash/outputs/elasticsearch"
7
+ settings = {
8
+ "hosts" => "#{get_host_port()}",
9
+ "pipeline" => "apache-logs"
10
+ }
11
+ next LogStash::Outputs::ElasticSearch.new(settings)
12
+ end
12
13
 
13
- let(:ftw_client) { FTW::Agent.new }
14
- let(:ingest_url) { "http://#{get_host_port()}/_ingest/pipeline/apache-logs" }
15
- let(:apache_logs_pipeline) { '
14
+ let(:ftw_client) { FTW::Agent.new }
15
+ let(:ingest_url) { "http://#{get_host_port()}/_ingest/pipeline/apache-logs" }
16
+ let(:apache_logs_pipeline) { '
16
17
  {
17
18
  "description" : "Pipeline to parse Apache logs",
18
19
  "processors" : [
@@ -24,52 +25,53 @@ describe "Ingest pipeline execution behavior", :integration => true, :version_gr
24
25
  }
25
26
  ]
26
27
  }'
27
- }
28
+ }
28
29
 
29
- before :each do
30
- # Delete all templates first.
31
- require "elasticsearch"
30
+ before :each do
31
+ # Delete all templates first.
32
+ require "elasticsearch"
32
33
 
33
- # Clean ES of data before we start.
34
- @es = get_client
35
- @es.indices.delete_template(:name => "*")
34
+ # Clean ES of data before we start.
35
+ @es = get_client
36
+ @es.indices.delete_template(:name => "*")
36
37
 
37
- # This can fail if there are no indexes, ignore failure.
38
- @es.indices.delete(:index => "*") rescue nil
38
+ # This can fail if there are no indexes, ignore failure.
39
+ @es.indices.delete(:index => "*") rescue nil
39
40
 
40
- # delete existing ingest pipeline
41
- req = ftw_client.delete(ingest_url)
42
- ftw_client.execute(req)
41
+ # delete existing ingest pipeline
42
+ req = ftw_client.delete(ingest_url)
43
+ ftw_client.execute(req)
43
44
 
44
- # register pipeline
45
- req = ftw_client.put(ingest_url, :body => apache_logs_pipeline)
46
- req.headers["Content-Type"] = "application/json"
47
- ftw_client.execute(req)
45
+ # register pipeline
46
+ req = ftw_client.put(ingest_url, :body => apache_logs_pipeline)
47
+ req.headers["Content-Type"] = "application/json"
48
+ ftw_client.execute(req)
48
49
 
49
- #TODO: Use esclient
50
- #@es.ingest.put_pipeline :id => 'apache_pipeline', :body => pipeline_defintion
50
+ #TODO: Use esclient
51
+ #@es.ingest.put_pipeline :id => 'apache_pipeline', :body => pipeline_defintion
51
52
 
52
- subject.register
53
- subject.multi_receive([LogStash::Event.new("message" => '183.60.215.50 - - [01/Jun/2015:18:00:00 +0000] "GET /scripts/netcat-webserver HTTP/1.1" 200 182 "-" "Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)"')])
54
- @es.indices.refresh
53
+ subject.register
54
+ subject.multi_receive([LogStash::Event.new("message" => '183.60.215.50 - - [01/Jun/2015:18:00:00 +0000] "GET /scripts/netcat-webserver HTTP/1.1" 200 182 "-" "Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)"')])
55
+ @es.indices.refresh
55
56
 
56
- #Wait or fail until everything's indexed.
57
- Stud::try(20.times) do
58
- r = @es.search
59
- insist { r["hits"]["total"] } == 1
57
+ #Wait or fail until everything's indexed.
58
+ Stud::try(20.times) do
59
+ r = @es.search
60
+ insist { r["hits"]["total"] } == 1
61
+ end
60
62
  end
61
- end
62
63
 
63
- it "indexes using the proper pipeline" do
64
- results = @es.search(:index => 'logstash-*', :q => "message:\"netcat\"")
65
- insist { results["hits"]["total"] } == 1
66
- insist { results["hits"]["hits"][0]["_source"]["response"] } == "200"
67
- insist { results["hits"]["hits"][0]["_source"]["bytes"] } == "182"
68
- insist { results["hits"]["hits"][0]["_source"]["verb"] } == "GET"
69
- insist { results["hits"]["hits"][0]["_source"]["request"] } == "/scripts/netcat-webserver"
70
- insist { results["hits"]["hits"][0]["_source"]["auth"] } == "-"
71
- insist { results["hits"]["hits"][0]["_source"]["ident"] } == "-"
72
- insist { results["hits"]["hits"][0]["_source"]["clientip"] } == "183.60.215.50"
73
- insist { results["hits"]["hits"][0]["_source"]["junkfieldaaaa"] } == nil
64
+ it "indexes using the proper pipeline" do
65
+ results = @es.search(:index => 'logstash-*', :q => "message:\"netcat\"")
66
+ insist { results["hits"]["total"] } == 1
67
+ insist { results["hits"]["hits"][0]["_source"]["response"] } == "200"
68
+ insist { results["hits"]["hits"][0]["_source"]["bytes"] } == "182"
69
+ insist { results["hits"]["hits"][0]["_source"]["verb"] } == "GET"
70
+ insist { results["hits"]["hits"][0]["_source"]["request"] } == "/scripts/netcat-webserver"
71
+ insist { results["hits"]["hits"][0]["_source"]["auth"] } == "-"
72
+ insist { results["hits"]["hits"][0]["_source"]["ident"] } == "-"
73
+ insist { results["hits"]["hits"][0]["_source"]["clientip"] } == "183.60.215.50"
74
+ insist { results["hits"]["hits"][0]["_source"]["junkfieldaaaa"] } == nil
75
+ end
74
76
  end
75
77
  end
@@ -1,148 +1,150 @@
1
1
  require_relative "../../../spec/es_spec_helper"
2
2
 
3
- describe "Update actions using painless scripts", :integration => true, :update_tests => 'painless', :version_greater_than_equal_to_5x => true do
4
- require "logstash/outputs/elasticsearch"
3
+ if ESHelper.es_version_satisfies?(">= 5")
4
+ describe "Update actions using painless scripts", :integration => true, :update_tests => 'painless' do
5
+ require "logstash/outputs/elasticsearch"
5
6
 
6
- def get_es_output( options={} )
7
- settings = {
8
- "manage_template" => true,
9
- "index" => "logstash-update",
10
- "template_overwrite" => true,
11
- "hosts" => get_host_port(),
12
- "action" => "update",
13
- "script_lang" => "painless"
14
- }
15
- LogStash::Outputs::ElasticSearch.new(settings.merge!(options))
16
- end
17
-
18
- before :each do
19
- @es = get_client
20
- # Delete all templates first.
21
- # Clean ES of data before we start.
22
- @es.indices.delete_template(:name => "*")
23
- # This can fail if there are no indexes, ignore failure.
24
- @es.indices.delete(:index => "*") rescue nil
25
- @es.index(
26
- :index => 'logstash-update',
27
- :type => 'logs',
28
- :id => "123",
29
- :body => { :message => 'Test', :counter => 1 }
30
- )
31
- @es.indices.refresh
32
- end
33
-
34
- context "scripted updates" do
35
- it "should increment a counter with event/doc 'count' variable" do
36
- subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update', 'script_type' => 'file' })
37
- subject.register
38
- subject.multi_receive([LogStash::Event.new("count" => 2)])
39
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
40
- insist { r["_source"]["counter"] } == 3
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" => "painless"
15
+ }
16
+ LogStash::Outputs::ElasticSearch.new(settings.merge!(options))
41
17
  end
42
18
 
43
- it "should increment a counter with event/doc '[data][count]' nested variable" do
44
- subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update_nested', 'script_type' => 'file' })
45
- subject.register
46
- subject.multi_receive([LogStash::Event.new("data" => { "count" => 3 })])
47
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
48
- insist { r["_source"]["counter"] } == 4
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 => 'logs',
29
+ :id => "123",
30
+ :body => { :message => 'Test', :counter => 1 }
31
+ )
32
+ @es.indices.refresh
49
33
  end
50
34
 
51
- it "should increment a counter with event/doc 'count' variable with inline script" do
52
- subject = get_es_output({
53
- 'document_id' => "123",
54
- 'script' => 'ctx._source.counter += params.event.counter',
55
- 'script_lang' => 'painless',
56
- 'script_type' => 'inline'
57
- })
58
- subject.register
59
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
60
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
61
- insist { r["_source"]["counter"] } == 4
62
- end
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 => 'logs', :id => "123", :refresh => true)
41
+ insist { r["_source"]["counter"] } == 3
42
+ end
63
43
 
64
- it "should increment a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
65
- subject = get_es_output({
66
- 'document_id' => "123",
67
- 'doc_as_upsert' => true,
68
- 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
69
- 'script_lang' => 'painless',
70
- 'script_type' => 'inline'
71
- })
72
- subject.register
73
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
74
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
75
- insist { r["_source"]["counter"] } == 4
76
- end
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 => 'logs', :id => "123", :refresh => true)
49
+ insist { r["_source"]["counter"] } == 4
50
+ end
77
51
 
78
- it "should, with new doc, set a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
79
- subject = get_es_output({
80
- 'document_id' => "456",
81
- 'doc_as_upsert' => true,
82
- 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
83
- 'script_lang' => 'painless',
84
- 'script_type' => 'inline'
85
- })
86
- subject.register
87
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
88
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
89
- insist { r["_source"]["counter"] } == 3
90
- end
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 += params.event.counter',
56
+ 'script_lang' => 'painless',
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 => 'logs', :id => "123", :refresh => true)
62
+ insist { r["_source"]["counter"] } == 4
63
+ end
91
64
 
92
- it "should increment a counter with event/doc 'count' variable with indexed script" do
93
- @es.put_script lang: 'painless', id: 'indexed_update', body: { script: 'ctx._source.counter += params.event.count' }
94
- subject = get_es_output({
95
- 'document_id' => "123",
96
- 'script' => 'indexed_update',
97
- 'script_lang' => 'painless',
98
- 'script_type' => 'indexed'
99
- })
100
- subject.register
101
- subject.multi_receive([LogStash::Event.new("count" => 4 )])
102
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
103
- insist { r["_source"]["counter"] } == 5
104
- end
105
- end
106
-
107
- context "when update with upsert" do
108
- it "should create new documents with provided upsert" do
109
- subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
110
- subject.register
111
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
112
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
113
- insist { r["_source"]["message"] } == 'upsert message'
114
- end
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 += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
70
+ 'script_lang' => 'painless',
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 => 'logs', :id => "123", :refresh => true)
76
+ insist { r["_source"]["counter"] } == 4
77
+ end
115
78
 
116
- it "should create new documents with event/doc as upsert" do
117
- subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
118
- subject.register
119
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
120
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
121
- insist { r["_source"]["message"] } == 'sample message here'
122
- end
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 += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
84
+ 'script_lang' => 'painless',
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 => 'logs', :id => "456", :refresh => true)
90
+ insist { r["_source"]["counter"] } == 3
91
+ end
123
92
 
124
- it "should fail on documents with event/doc as upsert at external version" do
125
- subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true, 'version' => 999, "version_type" => "external" })
126
- expect { subject.register }.to raise_error(LogStash::ConfigurationError)
127
- end
128
- end
93
+ it "should increment a counter with event/doc 'count' variable with indexed script" do
94
+ @es.put_script lang: 'painless', id: 'indexed_update', body: { script: 'ctx._source.counter += params.event.count' }
95
+ subject = get_es_output({
96
+ 'document_id' => "123",
97
+ 'script' => 'indexed_update',
98
+ 'script_lang' => 'painless',
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 => 'logs', :id => "123", :refresh => true)
104
+ insist { r["_source"]["counter"] } == 5
105
+ end
106
+ end
129
107
 
130
- context "updates with scripted upsert" do
131
- it "should create new documents with upsert content" do
132
- subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_update', 'upsert' => '{"message": "upsert message"}', 'script_type' => 'file' })
133
- subject.register
134
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
135
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
136
- insist { r["_source"]["message"] } == 'upsert message'
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 => 'logs', :id => "456", :refresh => true)
114
+ insist { r["_source"]["message"] } == '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 => 'logs', :id => "456", :refresh => true)
122
+ insist { r["_source"]["message"] } == '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
137
129
  end
138
130
 
139
- it "should create new documents with event/doc as script params" do
140
- subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_upsert', 'scripted_upsert' => true, 'script_type' => 'file' })
141
- subject.register
142
- subject.multi_receive([LogStash::Event.new("counter" => 1)])
143
- @es.indices.refresh
144
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
145
- insist { r["_source"]["counter"] } == 1
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 => 'logs', :id => "456", :refresh => true)
137
+ insist { r["_source"]["message"] } == '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 => 'logs', :id => "456", :refresh => true)
146
+ insist { r["_source"]["counter"] } == 1
147
+ end
146
148
  end
147
149
  end
148
150
  end
@@ -1,71 +1,73 @@
1
1
  require_relative "../../../spec/es_spec_helper"
2
2
  require "logstash/outputs/elasticsearch"
3
3
 
4
- shared_examples "a parent indexer" do
5
- let(:index) { 10.times.collect { rand(10).to_s }.join("") }
6
- let(:type) { 10.times.collect { rand(10).to_s }.join("") }
7
- let(:event_count) { 10000 + rand(500) }
8
- let(:parent) { "not_implemented" }
9
- let(:config) { "not_implemented" }
10
- let(:default_headers) {
11
- {"Content-Type" => "application/json"}
12
- }
13
- subject { LogStash::Outputs::ElasticSearch.new(config) }
4
+ if ESHelper.es_version_satisfies?("<= 5")
5
+ shared_examples "a parent indexer" do
6
+ let(:index) { 10.times.collect { rand(10).to_s }.join("") }
7
+ let(:type) { 10.times.collect { rand(10).to_s }.join("") }
8
+ let(:event_count) { 10000 + rand(500) }
9
+ let(:parent) { "not_implemented" }
10
+ let(:config) { "not_implemented" }
11
+ let(:default_headers) {
12
+ {"Content-Type" => "application/json"}
13
+ }
14
+ subject { LogStash::Outputs::ElasticSearch.new(config) }
14
15
 
15
- before do
16
- # Add mapping and a parent document
17
- index_url = "http://#{get_host_port()}/#{index}"
18
- ftw = FTW::Agent.new
19
- mapping = { "mappings" => { "#{type}" => { "_parent" => { "type" => "#{type}_parent" } } } }
20
- ftw.put!("#{index_url}", {:body => mapping.to_json, :headers => default_headers})
21
- pdoc = { "foo" => "bar" }
22
- ftw.put!("#{index_url}/#{type}_parent/test", {:body => pdoc.to_json, :headers => default_headers})
16
+ before do
17
+ # Add mapping and a parent document
18
+ index_url = "http://#{get_host_port()}/#{index}"
19
+ ftw = FTW::Agent.new
20
+ mapping = { "mappings" => { "#{type}" => { "_parent" => { "type" => "#{type}_parent" } } } }
21
+ ftw.put!("#{index_url}", {:body => mapping.to_json, :headers => default_headers})
22
+ pdoc = { "foo" => "bar" }
23
+ ftw.put!("#{index_url}/#{type}_parent/test", {:body => pdoc.to_json, :headers => default_headers})
23
24
 
24
- subject.register
25
- subject.multi_receive(event_count.times.map { LogStash::Event.new("link_to" => "test", "message" => "Hello World!", "type" => type) })
26
- end
25
+ subject.register
26
+ subject.multi_receive(event_count.times.map { LogStash::Event.new("link_to" => "test", "message" => "Hello World!", "type" => type) })
27
+ end
27
28
 
28
29
 
29
- it "ships events" do
30
- index_url = "http://#{get_host_port()}/#{index}"
30
+ it "ships events" do
31
+ index_url = "http://#{get_host_port()}/#{index}"
31
32
 
32
- ftw = FTW::Agent.new
33
- ftw.post!("#{index_url}/_refresh")
33
+ ftw = FTW::Agent.new
34
+ ftw.post!("#{index_url}/_refresh")
34
35
 
35
- # Wait until all events are available.
36
- Stud::try(10.times) do
37
- query = { "query" => { "has_parent" => { "type" => "#{type}_parent", "query" => { "match" => { "foo" => "bar" } } } } }
38
- data = ""
39
- response = ftw.post!("#{index_url}/_count", {:body => query.to_json, :headers => default_headers})
40
- response.read_body { |chunk| data << chunk }
41
- result = LogStash::Json.load(data)
42
- cur_count = result["count"]
43
- insist { cur_count } == event_count
36
+ # Wait until all events are available.
37
+ Stud::try(10.times) do
38
+ query = { "query" => { "has_parent" => { "type" => "#{type}_parent", "query" => { "match" => { "foo" => "bar" } } } } }
39
+ data = ""
40
+ response = ftw.post!("#{index_url}/_count", {:body => query.to_json, :headers => default_headers})
41
+ response.read_body { |chunk| data << chunk }
42
+ result = LogStash::Json.load(data)
43
+ cur_count = result["count"]
44
+ insist { cur_count } == event_count
45
+ end
44
46
  end
45
- end
46
- end
47
+ end
47
48
 
48
- describe "(http protocol) index events with static parent", :integration => true do
49
- it_behaves_like 'a parent indexer' do
50
- let(:parent) { "test" }
51
- let(:config) {
52
- {
53
- "hosts" => get_host_port,
54
- "index" => index,
55
- "parent" => parent
49
+ describe "(http protocol) index events with static parent", :integration => true do
50
+ it_behaves_like 'a parent indexer' do
51
+ let(:parent) { "test" }
52
+ let(:config) {
53
+ {
54
+ "hosts" => get_host_port,
55
+ "index" => index,
56
+ "parent" => parent
57
+ }
56
58
  }
57
- }
59
+ end
58
60
  end
59
- end
60
61
 
61
- describe "(http_protocol) index events with fieldref in parent value", :integration => true do
62
- it_behaves_like 'a parent indexer' do
63
- let(:config) {
64
- {
65
- "hosts" => get_host_port,
66
- "index" => index,
67
- "parent" => "%{link_to}"
62
+ describe "(http_protocol) index events with fieldref in parent value", :integration => true do
63
+ it_behaves_like 'a parent indexer' do
64
+ let(:config) {
65
+ {
66
+ "hosts" => get_host_port,
67
+ "index" => index,
68
+ "parent" => "%{link_to}"
69
+ }
68
70
  }
69
- }
71
+ end
70
72
  end
71
73
  end