stretcher 1.16.3 → 1.17.0
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/README.md +3 -2
- data/lib/stretcher/es_component.rb +7 -0
- data/lib/stretcher/index.rb +10 -0
- data/lib/stretcher/server.rb +5 -1
- data/lib/stretcher/version.rb +1 -1
- data/spec/lib/stretcher_index_spec.rb +36 -0
- data/spec/lib/stretcher_server_spec.rb +53 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5af13ebaa51c4010121aa5c822e4a03e48b04a3c
|
4
|
+
data.tar.gz: 67731bd18d6203bc3cdfff0ef99de2fb12826d27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff9ec72cdec4eb9f78274470ff4e79c32c1d7f1e24c945b7f0289bb1c22072e8e6727a6844699503cba38bf695204dc539b3910fea12efa11ed637a5f82ba1f7
|
7
|
+
data.tar.gz: 036f21bf4fbc7dd4a698a8148dbd81ba3fd7cdb579b2901ae3237d48c283334855b81529fa0cfc44cad3210f4180193d1b87ecda3b2502fd54b2bc2bdb7c2bed
|
data/README.md
CHANGED
@@ -89,7 +89,7 @@ This README documents only part of stretcher's API. The full documentation for s
|
|
89
89
|
|
90
90
|
### Logging
|
91
91
|
|
92
|
-
Pass in the
|
92
|
+
Pass in the `:log_level` parameter to set logging verbosity. cURL statements are surfaced at the `:debug` log level. For instance:
|
93
93
|
|
94
94
|
```ruby
|
95
95
|
Stretcher::Server.new('http://localhost:9200', :log_level => :debug)
|
@@ -116,10 +116,11 @@ Specs may be run with `rake spec`
|
|
116
116
|
## Contributors
|
117
117
|
|
118
118
|
* [@andrewvc](https://github.com/andrewvc)
|
119
|
+
* [@cmaitchison](https://github.com/cmaitchison)
|
120
|
+
* [@danharvey](https://github.com/danharvey)
|
119
121
|
* [@aq1018](https://github.com/aq1018)
|
120
122
|
* [@akahn](https://github.com/akahn)
|
121
123
|
* [@psynix](https://github.com/psynix)
|
122
|
-
* [@cmaitchison](https://github.com/cmaitchison)
|
123
124
|
* [@fmardini](https://github.com/fmardini)
|
124
125
|
* [@chatgris](https://github.com/chatgris)
|
125
126
|
* [@alpinegizmo](https://github.com/alpinegizmo)
|
@@ -38,5 +38,12 @@ module Stretcher
|
|
38
38
|
req.body = query
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
def do_alias(alias_name_or_prefix)
|
43
|
+
request(:get, "_alias/#{alias_name_or_prefix}")
|
44
|
+
rescue Stretcher::RequestError::NotFound => e
|
45
|
+
return {} if e.http_response.status == 404
|
46
|
+
raise e
|
47
|
+
end
|
41
48
|
end
|
42
49
|
end
|
data/lib/stretcher/index.rb
CHANGED
@@ -94,6 +94,11 @@ module Stretcher
|
|
94
94
|
request :get, "_settings"
|
95
95
|
end
|
96
96
|
|
97
|
+
# Update settings for this index
|
98
|
+
def update_settings(settings)
|
99
|
+
request :put, "_settings", nil, settings
|
100
|
+
end
|
101
|
+
|
97
102
|
# Check if the index has been created on the remote server
|
98
103
|
def exists?
|
99
104
|
# Unless the exception is hit we know its a 2xx response
|
@@ -154,6 +159,11 @@ module Stretcher
|
|
154
159
|
do_refresh
|
155
160
|
end
|
156
161
|
|
162
|
+
# Perform an optimize on the index to merge and reduce the number of segments
|
163
|
+
def optimize(options=nil)
|
164
|
+
request(:post, "_optimize", options)
|
165
|
+
end
|
166
|
+
|
157
167
|
# Full path to this index
|
158
168
|
def path_uri(path="/")
|
159
169
|
p = @server.path_uri("/#{name}")
|
data/lib/stretcher/server.rb
CHANGED
@@ -185,6 +185,10 @@ module Stretcher
|
|
185
185
|
end
|
186
186
|
end
|
187
187
|
|
188
|
+
def get_alias(alias_name_or_prefix)
|
189
|
+
do_alias(alias_name_or_prefix)
|
190
|
+
end
|
191
|
+
|
188
192
|
# Perform a refresh, making all indexed documents available
|
189
193
|
def refresh
|
190
194
|
do_refresh
|
@@ -192,7 +196,7 @@ module Stretcher
|
|
192
196
|
|
193
197
|
# Full path to the server root dir
|
194
198
|
def path_uri(path=nil)
|
195
|
-
@uri.to_s
|
199
|
+
URI.join(@uri.to_s, path.to_s).to_s
|
196
200
|
end
|
197
201
|
|
198
202
|
# Handy way to query the server, returning *only* the body
|
data/lib/stretcher/version.rb
CHANGED
@@ -220,4 +220,40 @@ describe Stretcher::Index do
|
|
220
220
|
res = server.index(:does_not_exist).msearch([{:query => {:match_all => {}}}])
|
221
221
|
}.should raise_exception(Stretcher::RequestError)
|
222
222
|
end
|
223
|
+
|
224
|
+
describe "#update_settings" do
|
225
|
+
it "updates settings on the index" do
|
226
|
+
index.get_settings['foo']['settings']['index.number_of_replicas'].should eq("0")
|
227
|
+
index.update_settings("index.number_of_replicas" => "1")
|
228
|
+
index.get_settings['foo']['settings']['index.number_of_replicas'].should eq("1")
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
describe "#optimize" do
|
233
|
+
let(:request_url) { "http://localhost:9200/foo/_optimize" }
|
234
|
+
|
235
|
+
context "with no options" do
|
236
|
+
it "calls request for the correct endpoint with empty options" do
|
237
|
+
expect(index.server).to receive(:request).with(:post, request_url, nil, nil, {})
|
238
|
+
index.optimize
|
239
|
+
end
|
240
|
+
|
241
|
+
it "successfully runs the optimize command for the index" do
|
242
|
+
expect(index.optimize.ok).to be_true
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
context "with options" do
|
247
|
+
it "calls request for the correct endpoint with options passed" do
|
248
|
+
expect(index.server).to receive(:request).with(:post, request_url, {"max_num_segments" => 1}, nil, {})
|
249
|
+
index.optimize("max_num_segments" => 1)
|
250
|
+
end
|
251
|
+
|
252
|
+
it "successfully runs the optimize command for the index with the options passed" do
|
253
|
+
expect(index.optimize("max_num_segments" => 1).ok).to be_true
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
|
223
259
|
end
|
@@ -1,7 +1,13 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Stretcher::Server do
|
4
|
-
let(:server)
|
4
|
+
let(:server) do
|
5
|
+
server = Stretcher::Server.new(ES_URL, :logger => DEBUG_LOGGER)
|
6
|
+
i = server.index('foo')
|
7
|
+
i.delete rescue Stretcher::RequestError::NotFound
|
8
|
+
i.create
|
9
|
+
server
|
10
|
+
end
|
5
11
|
|
6
12
|
it "should initialize cleanly" do
|
7
13
|
server.class.should == Stretcher::Server
|
@@ -86,4 +92,50 @@ describe Stretcher::Server do
|
|
86
92
|
server.analyze("Candles", :analyzer => :snowball)
|
87
93
|
end
|
88
94
|
|
95
|
+
describe ".path_uri" do
|
96
|
+
context "uri contains trailing /" do
|
97
|
+
subject { Stretcher::Server.new("http://example.com/").path_uri("/foo") }
|
98
|
+
it { should eq ("http://example.com/foo") }
|
99
|
+
end
|
100
|
+
|
101
|
+
context "uri contains no trailing /" do
|
102
|
+
subject { Stretcher::Server.new("http://example.com").path_uri("/foo") }
|
103
|
+
it { should eq ("http://example.com/foo") }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "#get_alias" do
|
108
|
+
let(:request_url) { "_alias/bar" }
|
109
|
+
let(:http_response) { double("http_response") }
|
110
|
+
let(:exception) { Stretcher::RequestError::NotFound.new(http_response) }
|
111
|
+
|
112
|
+
it "sends a request to the correct endpoint with an alias that exists" do
|
113
|
+
expect(server).to receive(:request).with(:get, request_url) { :foo }
|
114
|
+
expect(server.get_alias("bar")).to eq(:foo)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "sends a request to the correct endpoint with an alias that does not exist" do
|
118
|
+
expect(server).to receive(:request).with(:get, request_url).and_raise(exception)
|
119
|
+
expect(http_response).to receive(:status) { 404 }
|
120
|
+
|
121
|
+
expect(server.get_alias("bar")).to eq({})
|
122
|
+
end
|
123
|
+
|
124
|
+
it "sends a request to the correct endpoint and gets and error response" do
|
125
|
+
expect(server).to receive(:request).with(:get, request_url).and_raise(exception)
|
126
|
+
expect(http_response).to receive(:status) { 410 }
|
127
|
+
|
128
|
+
expect { server.get_alias("bar") }.to raise_error(exception)
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should return an empty array if no aliases exist" do
|
132
|
+
expect(server.get_alias("bar")).to eq({})
|
133
|
+
end
|
134
|
+
|
135
|
+
it "should return a hash of the aliases if at least one exists" do
|
136
|
+
server.aliases(:actions => [{ :add => { :index => "foo", :alias => "bar" }}])
|
137
|
+
expect(server.get_alias("bar")).to eq({"foo" => {"aliases" => {"bar" => {}}}})
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
89
141
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stretcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Cholakian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07
|
11
|
+
date: 2013-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|