elastomer-client 0.9.0 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f92a7cb69e266a5d7d085d3ac4c2cb71689c30d
4
- data.tar.gz: a87d3c6dd12b5b243061c9641c1baedb5ff3ae95
3
+ metadata.gz: d77143e192594473f269fc69f9b6552dd7c5b3d8
4
+ data.tar.gz: aa71ccdf91b2a0277b61595bcd2b34409c3bd02b
5
5
  SHA512:
6
- metadata.gz: 483643b29967808319ce67e5b6b58458dc6034f9e6df78601a6f9264ad666205648c3117bb940b6f8b58a73086e1589302bf98c12575922c5ef434856b003fa6
7
- data.tar.gz: 8e3b0f7bbf2c399d10efd7892d1d216ef6d64c41247c040eb246957162428c2324cbb5e68dcb167ede04a2618a5ab0ddb0584a53be63aad0bc14e968e6ec7886
6
+ metadata.gz: b7cb2962c8cdc9712989d9c2e127147e1126ca4f4dcca825c55b4a8f496626f01b236fd59097cb119f031849858f7f1acbe8eda4258e3f9dfa7d7e924533c011
7
+ data.tar.gz: d780635a018e9d178d28e279ee1051be21ecd522f6db0edcdb88ef53fbef49dc2b2de58433b9b96a1bb13fb773177830487a0f7bbc3e2cd439eb511af6e56268
@@ -1,7 +1,13 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.1.1
4
- - 1.9.3
4
+
5
+ addons:
6
+ apt:
7
+ sources:
8
+ elasticsearch-2.x
9
+ packages:
10
+ elasticsearch
5
11
 
6
12
  services:
7
13
  - elasticsearch
data/README.md CHANGED
@@ -92,7 +92,7 @@ docs.index({
92
92
  :tweet => 'announcing Elastomer, the stupid simple Elasticsearch client'
93
93
  })
94
94
 
95
- docs.search({:query => {:match_all => {}}}, :search_type => 'count')
95
+ docs.search({:query => {:match_all => {}}}, :size => 0)
96
96
  ```
97
97
 
98
98
  #### Performance
@@ -182,12 +182,12 @@ client.expand_path("{/index}{/type}/_search", {
182
182
  #=> "/twitter/tweet/_search?q=*:*"
183
183
 
184
184
  client.expand_path("{/index}{/type}/_search", {
185
- :index => "twitter",
186
- :type => ["tweet", "user"],
187
- :q => "*:*"
188
- :search_type => "count"
185
+ :index => "twitter",
186
+ :type => ["tweet", "user"],
187
+ :q => "*:*"
188
+ :size => 0
189
189
  })
190
- #=> "/twitter/tweet,user/_search?q=*:*&search_type=count"
190
+ #=> "/twitter/tweet,user/_search?q=*:*&size=0"
191
191
  ```
192
192
 
193
193
  In the examples above the path elements are optional. We can force them to be
@@ -196,27 +196,19 @@ results["hits"]["total"] #=> 1
196
196
  ```
197
197
 
198
198
  The search results always contain the total number of matched documents; even if
199
- the `:size` is set to zero or some other number. However this is very inefficient.
199
+ the `:size` is set to zero or some other number.
200
200
 
201
201
  Elasticsearch provides specific methods for obtaining the number of documents
202
- that match a search. Instead we can specify a `:search_type` tailored for
203
- counting.
202
+ that match a search. Using the count API endpoint is another way to get the
203
+ number of documents.
204
204
 
205
205
  ```ruby
206
- results = client.docs("blog", "post").search \
207
- :q => "title:nerd",
208
- :search_type => "count"
206
+ results = client.docs("blog", "post").count \
207
+ :q => "title:nerd"
209
208
 
210
- results["hits"]["total"] #=> 1
209
+ results["count"] #=> 1
211
210
  ```
212
211
 
213
- The `"count"` search type is much more efficient then setting the size to zero.
214
- These count queries will return more quickly and consume less memory inside
215
- Elasticsearch.
216
-
217
- There is also a `count` API method, but the `:search_type` approach is even more
218
- efficient than the count API.
219
-
220
212
  #### Deleting
221
213
 
222
214
  Documents can be deleted directly given their document ID.
@@ -14,7 +14,7 @@ The event namespace is `request.client.elastomer`.
14
14
  :action => "docs.search",
15
15
  :context => nil,
16
16
  :body => "{\"query\":{\"match_all\":{}}}",
17
- :url => #<URI::HTTP:0x007fb6f3e98b60 URL:http://localhost:19200/index-test/_search?search_type = count>,
17
+ :url => #<URI::HTTP:0x007fb6f3e98b60 URL:http://localhost:19200/index-test/_search?size=0>,
18
18
  :method => :get,
19
19
  :status => 200
20
20
  }
@@ -158,6 +158,7 @@ module Elastomer
158
158
  # immediately.
159
159
  #
160
160
  class Bulk
161
+ DEFAULT_REQUEST_SIZE = 10 * 2**20 # 10 MB
161
162
 
162
163
  # Create a new bulk client for handling some of the details of
163
164
  # accumulating documents to index and then formatting them properly for
@@ -174,7 +175,7 @@ module Elastomer
174
175
  @actions = []
175
176
  @current_request_size = 0
176
177
  @current_action_count = 0
177
- self.request_size = params.delete(:request_size)
178
+ self.request_size = params.delete(:request_size) || DEFAULT_REQUEST_SIZE
178
179
  self.action_count = params.delete(:action_count)
179
180
  end
180
181
 
@@ -331,11 +331,11 @@ module Elastomer
331
331
  Percolate
332
332
  =end
333
333
 
334
- # Search for documents similar to a specific document. The document
335
- # :id is provided as part of the params hash. If the _all field is
336
- # not enabled, :mlt_fields must be passed. A query cannot be present
337
- # in the query body, but other fields like :size and :facets are
338
- # allowed.
334
+ # Deprecated - use the More Like This query: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-mlt-query.html
335
+ # Search for documents similar to a specific document. The
336
+ # document :id is provided as part of the params hash. If the _all field
337
+ # is not enabled, :mlt_fields must be passed. A query cannot be present in
338
+ # the query body, but other fields like :size and :facets are allowed.
339
339
  #
340
340
  # params - Parameters Hash
341
341
  # :id - the ID of the document
@@ -504,7 +504,7 @@ Percolate
504
504
  # Examples
505
505
  #
506
506
  # docs.multi_search do |m|
507
- # m.search({:query => {:match_all => {}}, :search_type => :count)
507
+ # m.search({:query => {:match_all => {}}, :size => 0)
508
508
  # m.search({:query => {:field => {"foo" => "bar"}}})
509
509
  # ...
510
510
  # end
@@ -17,6 +17,7 @@ module Elastomer
17
17
  #
18
18
  def initialize( *args )
19
19
  @status = nil
20
+ @error = nil
20
21
 
21
22
  case args.first
22
23
  when Exception
@@ -27,9 +28,11 @@ module Elastomer
27
28
  when Faraday::Response
28
29
  response = args.shift
29
30
  @status = response.status
31
+
30
32
  body = response.body
33
+ @error = body["error"] if body.is_a?(Hash) && body.key?("error")
31
34
 
32
- message = body.is_a?(Hash) && body["error"] || body.to_s
35
+ message = @error || body.to_s
33
36
  super message
34
37
 
35
38
  else
@@ -41,6 +44,10 @@ module Elastomer
41
44
  # created with a response.
42
45
  attr_reader :status
43
46
 
47
+ # Returns the Elasticsearch error from the `response` or nil if the Error
48
+ # was not created with a response.
49
+ attr_reader :error
50
+
44
51
  # Indicates that the error is fatal. The request should not be tried
45
52
  # again.
46
53
  def fatal?
@@ -150,6 +150,10 @@ module Elastomer
150
150
  end
151
151
  alias_method :put_mapping, :update_mapping
152
152
 
153
+ # DEPRECATED: It is no longer possible to delete the mapping for a type.
154
+ # Instead you should delete the index and recreate it with new mappings.
155
+ # See https://www.elastic.co/guide/en/elasticsearch/reference/2.3/indices-delete-mapping.html
156
+ #
153
157
  # Delete the mapping identified by `type`. This deletes all documents of
154
158
  # that type from the index.
155
159
  #
@@ -500,7 +504,7 @@ module Elastomer
500
504
  # Examples
501
505
  #
502
506
  # index.multi_search do |m|
503
- # m.search({:query => {:match_all => {}}, :search_type => :count)
507
+ # m.search({:query => {:match_all => {}}, :size => 0)
504
508
  # m.search({:query => {:field => {"author" => "grantr"}}}, :type => 'tweet')
505
509
  # ...
506
510
  # end
@@ -25,7 +25,7 @@ module Elastomer
25
25
  #
26
26
  # # block form
27
27
  # multi_search(:index => 'default-index') do |m|
28
- # m.search({:query => {:match_all => {}}, :search_type => :count)
28
+ # m.search({:query => {:match_all => {}}, :size => 0)
29
29
  # m.search({:query => {:field => {"foo" => "bar"}}}, :type => 'default-type')
30
30
  # ...
31
31
  # end
@@ -23,6 +23,8 @@ module Elastomer
23
23
  Scroller.new(self, query, opts)
24
24
  end
25
25
 
26
+ # DEPRECATED in ES 2.1.0 - use a Scroll query sorted by _doc: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-request-search-type.html#scan
27
+ #
26
28
  # Create a new Scroller instance for scrolling all results from a `query`
27
29
  # via "scan" semantics.
28
30
  #
@@ -56,7 +58,7 @@ module Elastomer
56
58
  # :type - the document type to search
57
59
  # :scroll - the keep alive time of the scrolling request (5 minutes by default)
58
60
  # :size - the number of documents per shard to fetch per scroll
59
- # :search_type - set to 'scan' for scan semantics
61
+ # :search_type - set to 'scan' for scan semantics # DEPRECATED in ES 2.1.0 - use a Scroll query sorted by _doc: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-request-search-type.html#scan
60
62
  #
61
63
  # Examples
62
64
  #
@@ -85,7 +87,7 @@ module Elastomer
85
87
  #
86
88
  # Examples
87
89
  #
88
- # scroll_id = client.start_scroll('{"query":{"match_all":{}}}', :index => 'test', :search_type => 'scan')['_scroll_id']
90
+ # scroll_id = client.start_scroll('{"query":{"match_all":{}}}', :index => 'test')['_scroll_id']
89
91
  #
90
92
  # h = client.continue_scroll scroll_id # scroll to get the next set of results
91
93
  # scroll_id = h['_scroll_id'] # and store the scroll_id to use later
@@ -123,11 +125,11 @@ module Elastomer
123
125
  # :type - the document type to search
124
126
  # :scroll - the keep alive time of the scrolling request (5 minutes by default)
125
127
  # :size - the number of documents per shard to fetch per scroll
126
- # :search_type - set to 'scan' for scan query semantics
128
+ # :search_type - set to 'scan' for scan semantics # DEPRECATED in ES 2.1.0 - use a Scroll query sorted by _doc: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-request-search-type.html#scan
127
129
  #
128
130
  # Examples
129
131
  #
130
- # scan = Scroller.new(client, {:search_type => 'scan', :query => {:match_all => {}}}, :index => 'test-1')
132
+ # scan = Scroller.new(client, {:query => {:match_all => {}}}, :index => 'test-1')
131
133
  # scan.each_document { |doc|
132
134
  # doc['_id']
133
135
  # doc['_source']
@@ -1,5 +1,5 @@
1
1
  module Elastomer
2
- VERSION = "0.9.0"
2
+ VERSION = "2.0.0"
3
3
 
4
4
  def self.version
5
5
  VERSION
@@ -188,7 +188,7 @@ describe Elastomer::Client::Bulk do
188
188
  ary.each { |a| a["items"].each { |b| assert_bulk_index(b) } }
189
189
 
190
190
  @index.refresh
191
- h = @index.docs.search :q => "*:*", :search_type => "count"
191
+ h = @index.docs.search :q => "*:*", :size => 0
192
192
 
193
193
  assert_equal 10, h["hits"]["total"]
194
194
  end
@@ -219,7 +219,7 @@ describe Elastomer::Client::Bulk do
219
219
  ary.each { |a| a["items"].each { |b| assert_bulk_index(b) } }
220
220
 
221
221
  @index.refresh
222
- h = @index.docs.search :q => "*:*", :search_type => "count"
222
+ h = @index.docs.search :q => "*:*", :size => 0
223
223
 
224
224
  assert_equal 10, h["hits"]["total"]
225
225
  end
@@ -314,7 +314,7 @@ describe Elastomer::Client::Bulk do
314
314
  [:index, { :message => "tweet 3" }, { :_id => 3, :_type => "book", :_index => @index.name }]
315
315
  ]
316
316
  items = []
317
- stats = $client.bulk_stream_items(ops, { :action_count => 2 }) { |item| items << item }
317
+ $client.bulk_stream_items(ops, { :action_count => 2 }) { |item| items << item }
318
318
  assert_equal(3, items.length)
319
319
  assert_bulk_index(items[0])
320
320
  assert_bulk_index(items[1])
@@ -55,26 +55,17 @@ describe Elastomer::Client::Cluster do
55
55
  end
56
56
 
57
57
  it "updates the cluster settings" do
58
- @cluster.update_settings :transient => { "indices.ttl.interval" => "30" }
58
+ @cluster.update_settings :transient => { "indices.ttl.interval" => "30m" }
59
59
  h = @cluster.settings
60
60
 
61
- #COMPATIBILITY
62
- # ES 1.0 changed the default return format of cluster settings to always
63
- # expand nested properties, e.g.
64
- # {"indices.ttl.interval": "30"} changed to
65
- # {"indices": {"ttl": {"interval":"30"}}}
61
+ value = h["transient"]["indices"]["ttl"]["interval"]
62
+ assert_equal "30m", value
66
63
 
67
- # To support both versions, we check for either return format.
68
- value = h["transient"]["indices.ttl.interval"] ||
69
- h["transient"]["indices"]["ttl"]["interval"]
70
- assert_equal "30", value
71
-
72
- @cluster.update_settings :transient => { "indices.ttl.interval" => "60" }
64
+ @cluster.update_settings :transient => { "indices.ttl.interval" => "60m" }
73
65
  h = @cluster.settings
74
66
 
75
- value = h["transient"]["indices.ttl.interval"] ||
76
- h["transient"]["indices"]["ttl"]["interval"]
77
- assert_equal "60", value
67
+ value = h["transient"]["indices"]["ttl"]["interval"]
68
+ assert_equal "60m", value
78
69
  end
79
70
 
80
71
  it "returns cluster stats" do
@@ -15,7 +15,7 @@ describe Elastomer::Client::DeleteByQuery do
15
15
  describe "when an index with documents exists" do
16
16
  before do
17
17
  @index.create(nil)
18
- wait_for_index(@index_name)
18
+ wait_for_index(@index.name)
19
19
  end
20
20
 
21
21
  it "deletes by query" do
@@ -13,7 +13,7 @@ describe Elastomer::Client::Docs do
13
13
  :doc1 => {
14
14
  :_source => { :enabled => true }, :_all => { :enabled => false },
15
15
  :properties => {
16
- :title => { :type => "string", :analyzer => "standard" },
16
+ :title => { :type => "string", :analyzer => "standard", :term_vector => "with_positions_offsets" },
17
17
  :author => { :type => "string", :index => "not_analyzed" }
18
18
  }
19
19
  },
@@ -233,25 +233,18 @@ describe Elastomer::Client::Docs do
233
233
  assert_found h["docs"][0]
234
234
  refute_found h["docs"][1]
235
235
 
236
- #COMPATIBILITY
237
- # ES 1.0 normalized all search APIs to use a :query top level element.
238
- # This broke compatibility with the ES 0.90 delete_by_query api. Since
239
- # the query hash version of this api never worked with 0.90 in the first
240
- # place, only test it if running 1.0.
241
- if es_version_1_x?
242
- h = @docs.delete_by_query(
243
- :query => {
244
- :filtered => {
245
- :query => {:match_all => {}},
246
- :filter => {:term => {:author => "pea53"}}
247
- }
236
+ h = @docs.delete_by_query(
237
+ :query => {
238
+ :filtered => {
239
+ :query => {:match_all => {}},
240
+ :filter => {:term => {:author => "pea53"}}
248
241
  }
249
- )
250
- @index.refresh
251
- h = @docs.multi_get :ids => [1, 2]
252
- refute_found h["docs"][0]
253
- refute_found h["docs"][1]
254
- end
242
+ }
243
+ )
244
+ @index.refresh
245
+ h = @docs.multi_get :ids => [1, 2]
246
+ refute_found h["docs"][0]
247
+ refute_found h["docs"][1]
255
248
  end
256
249
 
257
250
  it "searches for documents" do
@@ -301,66 +294,57 @@ describe Elastomer::Client::Docs do
301
294
  h = @docs.count :q => "*:*", :type => "doc1,doc2"
302
295
  assert_equal 4, h["count"]
303
296
 
304
- #COMPATIBILITY
305
- # ES 1.0 normalized all search APIs to use a :query top level element.
306
- # This broke compatibility with the ES 0.90 count api.
307
- if es_version_1_x?
308
- h = @docs.count({
309
- :query => {
310
- :filtered => {
311
- :query => {:match_all => {}},
312
- :filter => {:term => {:author => "defunkt"}}
313
- }
314
- }
315
- }, :type => %w[doc1 doc2] )
316
- else
317
- h = @docs.count({
297
+ h = @docs.count({
298
+ :query => {
318
299
  :filtered => {
319
300
  :query => {:match_all => {}},
320
301
  :filter => {:term => {:author => "defunkt"}}
321
302
  }
322
- }, :type => %w[doc1 doc2] )
323
- end
303
+ }
304
+ }, :type => %w[doc1 doc2] )
324
305
  assert_equal 1, h["count"]
325
306
  end
326
307
 
327
- it "searches for more like this" do
328
- populate!
308
+ # The /_mlt endpoint has been removed from ES 2.X
309
+ if es_version_1_x?
310
+ it "searches for more like this" do
311
+ populate!
329
312
 
330
- # for some reason, if there's no document indexed here all the mlt
331
- # queries return zero results
332
- @docs.index \
333
- :_id => 3,
334
- :_type => "doc1",
335
- :title => "the author of faraday",
336
- :author => "technoweenie"
313
+ # for some reason, if there's no document indexed here all the mlt
314
+ # queries return zero results
315
+ @docs.index \
316
+ :_id => 3,
317
+ :_type => "doc1",
318
+ :title => "the author of faraday",
319
+ :author => "technoweenie"
337
320
 
338
- @index.refresh
321
+ @index.refresh
339
322
 
340
- h = @docs.more_like_this({
341
- :type => "doc1",
342
- :id => 1,
343
- :mlt_fields => "title",
344
- :min_term_freq => 1
345
- })
346
- assert_equal 2, h["hits"]["total"]
323
+ h = @docs.more_like_this({
324
+ :type => "doc1",
325
+ :id => 1,
326
+ :mlt_fields => "title",
327
+ :min_term_freq => 1
328
+ })
329
+ assert_equal 2, h["hits"]["total"]
347
330
 
348
- h = @docs.more_like_this({
349
- :facets => {
350
- "author" => {
351
- :terms => {
352
- :field => "author"
331
+ h = @docs.more_like_this({
332
+ :facets => {
333
+ "author" => {
334
+ :terms => {
335
+ :field => "author"
336
+ }
353
337
  }
354
338
  }
355
- }
356
- }, {
357
- :type => "doc1",
358
- :id => 1,
359
- :mlt_fields => "title,author",
360
- :min_term_freq => 1
361
- })
362
- assert_equal 2, h["hits"]["total"]
363
- assert_equal 2, h["facets"]["author"]["total"]
339
+ }, {
340
+ :type => "doc1",
341
+ :id => 1,
342
+ :mlt_fields => "title,author",
343
+ :min_term_freq => 1
344
+ })
345
+ assert_equal 2, h["hits"]["total"]
346
+ assert_equal 2, h["facets"]["author"]["total"]
347
+ end
364
348
  end
365
349
 
366
350
  it "explains scoring" do
@@ -385,26 +369,14 @@ describe Elastomer::Client::Docs do
385
369
  h = @docs.validate :q => "*:*"
386
370
  assert_equal true, h["valid"]
387
371
 
388
- #COMPATIBILITY
389
- # ES 1.0 normalized all search APIs to use a :query top level element.
390
- # This broke compatibility with the ES 0.90 validate api.
391
- if es_version_1_x?
392
- h = @docs.validate({
393
- :query => {
394
- :filtered => {
395
- :query => {:match_all => {}},
396
- :filter => {:term => {:author => "defunkt"}}
397
- }
398
- }
399
- }, :type => %w[doc1 doc2] )
400
- else
401
- h = @docs.validate({
372
+ h = @docs.validate({
373
+ :query => {
402
374
  :filtered => {
403
375
  :query => {:match_all => {}},
404
376
  :filter => {:term => {:author => "defunkt"}}
405
377
  }
406
- }, :type => %w[doc1 doc2] )
407
- end
378
+ }
379
+ }, :type => %w[doc1 doc2] )
408
380
  assert_equal true, h["valid"]
409
381
  end
410
382
 
@@ -454,144 +426,142 @@ describe Elastomer::Client::Docs do
454
426
  assert_equal "mojombo", response["_source"]["author"]
455
427
  end
456
428
 
457
- if es_version_1_x?
458
- it "provides access to term vector statistics" do
459
- populate!
460
-
461
- response = @docs.termvector :type => "doc2", :id => 1, :fields => "title"
429
+ it "provides access to term vector statistics" do
430
+ populate!
462
431
 
463
- assert response["term_vectors"]["title"]
464
- assert response["term_vectors"]["title"]["field_statistics"]
465
- assert response["term_vectors"]["title"]["terms"]
466
- assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
467
- end
432
+ response = @docs.termvector :type => "doc2", :id => 1, :fields => "title"
468
433
 
469
- it "provides access to term vector statistics with .termvectors" do
470
- populate!
434
+ assert response["term_vectors"]["title"]
435
+ assert response["term_vectors"]["title"]["field_statistics"]
436
+ assert response["term_vectors"]["title"]["terms"]
437
+ assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
438
+ end
471
439
 
472
- response = @docs.termvectors :type => "doc2", :id => 1, :fields => "title"
440
+ it "provides access to term vector statistics with .termvectors" do
441
+ populate!
473
442
 
474
- assert response["term_vectors"]["title"]
475
- assert response["term_vectors"]["title"]["field_statistics"]
476
- assert response["term_vectors"]["title"]["terms"]
477
- assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
478
- end
443
+ response = @docs.termvectors :type => "doc2", :id => 1, :fields => "title"
479
444
 
480
- it "provides access to term vector statistics with .term_vector" do
481
- populate!
445
+ assert response["term_vectors"]["title"]
446
+ assert response["term_vectors"]["title"]["field_statistics"]
447
+ assert response["term_vectors"]["title"]["terms"]
448
+ assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
449
+ end
482
450
 
483
- response = @docs.term_vector :type => "doc2", :id => 1, :fields => "title"
451
+ it "provides access to term vector statistics with .term_vector" do
452
+ populate!
484
453
 
485
- assert response["term_vectors"]["title"]
486
- assert response["term_vectors"]["title"]["field_statistics"]
487
- assert response["term_vectors"]["title"]["terms"]
488
- assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
489
- end
454
+ response = @docs.term_vector :type => "doc2", :id => 1, :fields => "title"
490
455
 
491
- it "provides access to term vector statistics with .term_vectors" do
492
- populate!
456
+ assert response["term_vectors"]["title"]
457
+ assert response["term_vectors"]["title"]["field_statistics"]
458
+ assert response["term_vectors"]["title"]["terms"]
459
+ assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
460
+ end
493
461
 
494
- response = @docs.term_vectors :type => "doc2", :id => 1, :fields => "title"
462
+ it "provides access to term vector statistics with .term_vectors" do
463
+ populate!
495
464
 
496
- assert response["term_vectors"]["title"]
497
- assert response["term_vectors"]["title"]["field_statistics"]
498
- assert response["term_vectors"]["title"]["terms"]
499
- assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
500
- end
465
+ response = @docs.term_vectors :type => "doc2", :id => 1, :fields => "title"
501
466
 
502
- it "provides access to multi term vector statistics" do
503
- populate!
467
+ assert response["term_vectors"]["title"]
468
+ assert response["term_vectors"]["title"]["field_statistics"]
469
+ assert response["term_vectors"]["title"]["terms"]
470
+ assert_equal %w[author logging of the], response["term_vectors"]["title"]["terms"].keys
471
+ end
504
472
 
505
- response = @docs.multi_termvectors({:ids => [1, 2]}, :type => "doc2", :fields => "title", :term_statistics => true)
506
- docs = response["docs"]
473
+ it "provides access to multi term vector statistics" do
474
+ populate!
507
475
 
508
- assert docs
509
- assert_equal(%w[1 2], docs.map { |h| h["_id"] }.sort)
510
- end
476
+ response = @docs.multi_termvectors({:ids => [1, 2]}, :type => "doc2", :fields => "title", :term_statistics => true)
477
+ docs = response["docs"]
511
478
 
512
- it "provides access to multi term vector statistics with .multi_term_vectors" do
513
- populate!
479
+ assert docs
480
+ assert_equal(%w[1 2], docs.map { |h| h["_id"] }.sort)
481
+ end
514
482
 
515
- response = @docs.multi_term_vectors({:ids => [1, 2]}, :type => "doc2", :fields => "title", :term_statistics => true)
516
- docs = response["docs"]
483
+ it "provides access to multi term vector statistics with .multi_term_vectors" do
484
+ populate!
517
485
 
518
- assert docs
519
- assert_equal(%w[1 2], docs.map { |h| h["_id"] }.sort)
520
- end
486
+ response = @docs.multi_term_vectors({:ids => [1, 2]}, :type => "doc2", :fields => "title", :term_statistics => true)
487
+ docs = response["docs"]
521
488
 
522
- it "percolates a given document" do
523
- populate!
489
+ assert docs
490
+ assert_equal(%w[1 2], docs.map { |h| h["_id"] }.sort)
491
+ end
524
492
 
525
- percolator1 = @index.percolator "1"
526
- response = percolator1.create :query => { :match => { :author => "pea53" } }
527
- assert response["created"], "Couldn't create the percolator query"
528
- percolator2 = @index.percolator "2"
529
- response = percolator2.create :query => { :match => { :author => "defunkt" } }
530
- assert response["created"], "Couldn't create the percolator query"
493
+ it "percolates a given document" do
494
+ populate!
531
495
 
532
- response = @index.docs("doc1").percolate(:doc => { :author => "pea53" })
533
- assert_equal 1, response["matches"].length
534
- assert_equal "1", response["matches"][0]["_id"]
535
- end
496
+ percolator1 = @index.percolator "1"
497
+ response = percolator1.create :query => { :match => { :author => "pea53" } }
498
+ assert response["created"], "Couldn't create the percolator query"
499
+ percolator2 = @index.percolator "2"
500
+ response = percolator2.create :query => { :match => { :author => "defunkt" } }
501
+ assert response["created"], "Couldn't create the percolator query"
536
502
 
537
- it "percolates an existing document" do
538
- populate!
503
+ response = @index.docs("doc1").percolate(:doc => { :author => "pea53" })
504
+ assert_equal 1, response["matches"].length
505
+ assert_equal "1", response["matches"][0]["_id"]
506
+ end
539
507
 
540
- percolator1 = @index.percolator "1"
541
- response = percolator1.create :query => { :match => { :author => "pea53" } }
542
- assert response["created"], "Couldn't create the percolator query"
543
- percolator2 = @index.percolator "2"
544
- response = percolator2.create :query => { :match => { :author => "defunkt" } }
545
- assert response["created"], "Couldn't create the percolator query"
508
+ it "percolates an existing document" do
509
+ populate!
546
510
 
547
- response = @index.docs("doc2").percolate(nil, :id => "1")
548
- assert_equal 1, response["matches"].length
549
- assert_equal "1", response["matches"][0]["_id"]
550
- end
511
+ percolator1 = @index.percolator "1"
512
+ response = percolator1.create :query => { :match => { :author => "pea53" } }
513
+ assert response["created"], "Couldn't create the percolator query"
514
+ percolator2 = @index.percolator "2"
515
+ response = percolator2.create :query => { :match => { :author => "defunkt" } }
516
+ assert response["created"], "Couldn't create the percolator query"
551
517
 
552
- it "counts the matches for percolating a given document" do
553
- populate!
518
+ response = @index.docs("doc2").percolate(nil, :id => "1")
519
+ assert_equal 1, response["matches"].length
520
+ assert_equal "1", response["matches"][0]["_id"]
521
+ end
554
522
 
555
- percolator1 = @index.percolator "1"
556
- response = percolator1.create :query => { :match => { :author => "pea53" } }
557
- assert response["created"], "Couldn't create the percolator query"
558
- percolator2 = @index.percolator "2"
559
- response = percolator2.create :query => { :match => { :author => "defunkt" } }
560
- assert response["created"], "Couldn't create the percolator query"
523
+ it "counts the matches for percolating a given document" do
524
+ populate!
561
525
 
562
- count = @index.docs("doc1").percolate_count :doc => { :author => "pea53" }
563
- assert_equal 1, count
564
- end
526
+ percolator1 = @index.percolator "1"
527
+ response = percolator1.create :query => { :match => { :author => "pea53" } }
528
+ assert response["created"], "Couldn't create the percolator query"
529
+ percolator2 = @index.percolator "2"
530
+ response = percolator2.create :query => { :match => { :author => "defunkt" } }
531
+ assert response["created"], "Couldn't create the percolator query"
565
532
 
566
- it "counts the matches for percolating an existing document" do
567
- populate!
533
+ count = @index.docs("doc1").percolate_count :doc => { :author => "pea53" }
534
+ assert_equal 1, count
535
+ end
568
536
 
569
- percolator1 = @index.percolator "1"
570
- response = percolator1.create :query => { :match => { :author => "pea53" } }
571
- assert response["created"], "Couldn't create the percolator query"
572
- percolator2 = @index.percolator "2"
573
- response = percolator2.create :query => { :match => { :author => "defunkt" } }
574
- assert response["created"], "Couldn't create the percolator query"
537
+ it "counts the matches for percolating an existing document" do
538
+ populate!
575
539
 
576
- count = @index.docs("doc2").percolate_count(nil, :id => "1")
577
- assert_equal 1, count
578
- end
540
+ percolator1 = @index.percolator "1"
541
+ response = percolator1.create :query => { :match => { :author => "pea53" } }
542
+ assert response["created"], "Couldn't create the percolator query"
543
+ percolator2 = @index.percolator "2"
544
+ response = percolator2.create :query => { :match => { :author => "defunkt" } }
545
+ assert response["created"], "Couldn't create the percolator query"
579
546
 
580
- it "performs multi percolate queries" do
581
- @index.percolator("1").create :query => { :match_all => { } }
582
- @index.percolator("2").create :query => { :match => { :author => "pea53" } }
547
+ count = @index.docs("doc2").percolate_count(nil, :id => "1")
548
+ assert_equal 1, count
549
+ end
583
550
 
584
- h = @index.docs("doc2").multi_percolate do |m|
585
- m.percolate :author => "pea53"
586
- m.percolate :author => "grantr"
587
- m.count({}, { :author => "grantr" })
588
- end
551
+ it "performs multi percolate queries" do
552
+ @index.percolator("1").create :query => { :match_all => { } }
553
+ @index.percolator("2").create :query => { :match => { :author => "pea53" } }
589
554
 
590
- response1, response2, response3 = h["responses"]
591
- assert_equal ["1", "2"], response1["matches"].map { |match| match["_id"] }.sort
592
- assert_equal ["1"], response2["matches"].map { |match| match["_id"] }.sort
593
- assert_equal 1, response3["total"]
555
+ h = @index.docs("doc2").multi_percolate do |m|
556
+ m.percolate :author => "pea53"
557
+ m.percolate :author => "grantr"
558
+ m.count({}, { :author => "grantr" })
594
559
  end
560
+
561
+ response1, response2, response3 = h["responses"]
562
+ assert_equal ["1", "2"], response1["matches"].map { |match| match["_id"] }.sort
563
+ assert_equal ["1"], response2["matches"].map { |match| match["_id"] }.sort
564
+ assert_equal 1, response3["total"]
595
565
  end
596
566
 
597
567
  # Create/index multiple documents.
@@ -15,6 +15,29 @@ describe Elastomer::Client::Error do
15
15
  response = Faraday::Response.new(:body => {"error" => "IndexMissingException"})
16
16
  err = Elastomer::Client::Error.new(response)
17
17
  assert_equal "IndexMissingException", err.message
18
+ assert_equal "IndexMissingException", err.error
19
+
20
+ body = {
21
+ "error" => {
22
+ "index" => "non-existent-index",
23
+ "reason" => "no such index",
24
+ "resource.id" => "non-existent-index",
25
+ "resource.type" => "index_or_alias",
26
+ "root_cause"=> [{
27
+ "index" => "non-existent-index",
28
+ "reason" => "no such index",
29
+ "resource.id" => "non-existent-index",
30
+ "resource.type" => "index_or_alias",
31
+ "type" => "index_not_found_exception"
32
+ }],
33
+ "type" => "index_not_found_exception"
34
+ },
35
+ "status" => 404
36
+ }
37
+ response = Faraday::Response.new(:body => body)
38
+ err = Elastomer::Client::Error.new(response)
39
+ assert_equal body["error"].to_s, err.message
40
+ assert_equal body["error"], err.error
18
41
  end
19
42
 
20
43
  it "is instantiated from another exception" do
@@ -35,38 +35,16 @@ describe Elastomer::Client::Index do
35
35
  @index.create :settings => { :number_of_shards => 3, :number_of_replicas => 0 }
36
36
  settings = @index.get_settings[@name]["settings"]
37
37
 
38
- # COMPATIBILITY
39
- # ES 1.0 changed the default return format of index settings to always
40
- # expand nested properties, e.g.
41
- # {"index.number_of_replicas": "1"} changed to
42
- # {"index": {"number_of_replicas":"1"}}
43
-
44
- # To support both versions, we check for either return format.
45
- value = settings["index.number_of_shards"] ||
46
- settings["index"]["number_of_shards"]
47
- assert_equal "3", value
48
- value = settings["index.number_of_replicas"] ||
49
- settings["index"]["number_of_replicas"]
50
- assert_equal "0", value
38
+ assert_equal "3", settings["index"]["number_of_shards"]
39
+ assert_equal "0", settings["index"]["number_of_replicas"]
51
40
  end
52
41
 
53
42
  it "creates an index with settings with .settings" do
54
43
  @index.create :settings => { :number_of_shards => 3, :number_of_replicas => 0 }
55
44
  settings = @index.settings[@name]["settings"]
56
45
 
57
- # COMPATIBILITY
58
- # ES 1.0 changed the default return format of index settings to always
59
- # expand nested properties, e.g.
60
- # {"index.number_of_replicas": "1"} changed to
61
- # {"index": {"number_of_replicas":"1"}}
62
-
63
- # To support both versions, we check for either return format.
64
- value = settings["index.number_of_shards"] ||
65
- settings["index"]["number_of_shards"]
66
- assert_equal "3", value
67
- value = settings["index.number_of_replicas"] ||
68
- settings["index"]["number_of_replicas"]
69
- assert_equal "0", value
46
+ assert_equal "3", settings["index"]["number_of_shards"]
47
+ assert_equal "0", settings["index"]["number_of_replicas"]
70
48
  end
71
49
 
72
50
  it "adds mappings for document types" do
@@ -201,13 +179,22 @@ describe Elastomer::Client::Index do
201
179
  assert_mapping_exists @index.mapping[@name], "doco"
202
180
 
203
181
  response = @index.delete_mapping "doco"
204
- assert_acknowledged response
205
182
 
206
- mapping = @index.get_mapping
207
- mapping = mapping[@name] if mapping.key? @name
208
- mapping = mapping["mappings"] if mapping.key? "mappings"
183
+ if es_version_1_x?
184
+ assert_acknowledged response
185
+
186
+ mapping = @index.get_mapping
187
+ mapping = mapping[@name] if mapping.key? @name
188
+ mapping = mapping["mappings"] if mapping.key? "mappings"
189
+
190
+ assert_empty mapping, "no mappings are present"
209
191
 
210
- assert_empty mapping, "no mappings are present"
192
+ elsif es_version_2_x?
193
+ assert_equal "No handler found for uri [/elastomer-index-test/doco] and method [DELETE]", response
194
+
195
+ else
196
+ assert false, "Unsupported Elasticsearch version #{$client.semantic_version}"
197
+ end
211
198
  end
212
199
 
213
200
  it "lists all aliases to the index" do
@@ -246,48 +233,45 @@ describe Elastomer::Client::Index do
246
233
  end
247
234
  end
248
235
 
249
- # COMPATIBILITY ES 1.x removed English stopwords from the default analyzers,
250
- # so create a custom one with the English stopwords added.
251
- if es_version_1_x?
252
- it "analyzes text and returns tokens" do
253
- tokens = @index.analyze "Just a few words to analyze.", :analyzer => "standard", :index => nil
254
- tokens = tokens["tokens"].map { |h| h["token"] }
255
- assert_equal %w[just a few words to analyze], tokens
236
+ it "analyzes text and returns tokens" do
237
+ tokens = @index.analyze "Just a few words to analyze.", :analyzer => "standard", :index => nil
238
+ tokens = tokens["tokens"].map { |h| h["token"] }
239
+ assert_equal %w[just a few words to analyze], tokens
256
240
 
257
- @index.create(
258
- :settings => {
259
- :number_of_shards => 1,
260
- :number_of_replicas => 0,
261
- :analysis => {
262
- :analyzer => {
263
- :english_standard => {
264
- :type => :standard,
265
- :stopwords => "_english_"
266
- }
241
+ @index.create(
242
+ :settings => {
243
+ :number_of_shards => 1,
244
+ :number_of_replicas => 0,
245
+ :analysis => {
246
+ :analyzer => {
247
+ :english_standard => {
248
+ :type => :standard,
249
+ :stopwords => "_english_"
267
250
  }
268
251
  }
269
252
  }
270
- )
271
- wait_for_index(@name)
253
+ }
254
+ )
255
+ wait_for_index(@name)
272
256
 
273
- tokens = @index.analyze "Just a few words to analyze.", :analyzer => "english_standard"
274
- tokens = tokens["tokens"].map { |h| h["token"] }
275
- assert_equal %w[just few words analyze], tokens
276
- end
277
- else
278
- it "analyzes text and returns tokens" do
279
- tokens = @index.analyze "Just a few words to analyze.", :index => nil
280
- tokens = tokens["tokens"].map { |h| h["token"] }
281
- assert_equal %w[just few words analyze], tokens
282
-
283
- tokens = @index.analyze "Just a few words to analyze.", :analyzer => "simple", :index => nil
284
- tokens = tokens["tokens"].map { |h| h["token"] }
285
- assert_equal %w[just a few words to analyze], tokens
286
- end
257
+ tokens = @index.analyze "Just a few words to analyze.", :analyzer => "english_standard"
258
+ tokens = tokens["tokens"].map { |h| h["token"] }
259
+ assert_equal %w[just few words analyze], tokens
287
260
  end
288
261
 
289
262
  describe "when an index exists" do
290
263
  before do
264
+ suggest = {
265
+ :type => "completion",
266
+ :index_analyzer => "simple",
267
+ :search_analyzer => "simple",
268
+ :payloads => false
269
+ }
270
+
271
+ if es_version_2_x?
272
+ suggest[:analyzer] = suggest.delete(:index_analyzer)
273
+ end
274
+
291
275
  @index.create(
292
276
  :settings => { :number_of_shards => 1, :number_of_replicas => 0 },
293
277
  :mappings => {
@@ -297,12 +281,7 @@ describe Elastomer::Client::Index do
297
281
  :properties => {
298
282
  :title => { :type => "string", :analyzer => "standard" },
299
283
  :author => { :type => "string", :index => "not_analyzed" },
300
- :suggest => {
301
- :type => "completion",
302
- :index_analyzer => "simple",
303
- :search_analyzer => "simple",
304
- :payloads => false
305
- }
284
+ :suggest => suggest
306
285
  }
307
286
  }
308
287
  }
@@ -349,11 +328,9 @@ describe Elastomer::Client::Index do
349
328
  end
350
329
  end
351
330
 
352
- if es_version_1_x?
353
- it "recovery" do
354
- response = @index.recovery
355
- assert_includes response, "elastomer-index-test"
356
- end
331
+ it "recovery" do
332
+ response = @index.recovery
333
+ assert_includes response, "elastomer-index-test"
357
334
  end
358
335
 
359
336
  it "clears caches" do
@@ -370,9 +347,12 @@ describe Elastomer::Client::Index do
370
347
  end
371
348
  end
372
349
 
373
- it "gets status" do
374
- response = @index.status
375
- assert_includes response["indices"], "elastomer-index-test"
350
+ # The /<index>/_status endpoint has been removed in ES 2.X
351
+ if es_version_1_x?
352
+ it "gets status" do
353
+ response = @index.status
354
+ assert_includes response["indices"], "elastomer-index-test"
355
+ end
376
356
  end
377
357
 
378
358
  it "gets segments" do
@@ -40,7 +40,7 @@ describe Elastomer::Client::MultiSearch do
40
40
  populate!
41
41
 
42
42
  body = [
43
- '{"index" : "elastomer-msearch-test", "search_type" : "count"}',
43
+ '{"index" : "elastomer-msearch-test", "size" : 0}',
44
44
  '{"query" : {"match_all" : {}}}',
45
45
  '{"index" : "elastomer-msearch-test", "type": "doc2"}',
46
46
  '{"query" : {"match": {"author" : "grantr"}}}',
@@ -69,7 +69,7 @@ describe Elastomer::Client::MultiSearch do
69
69
  populate!
70
70
 
71
71
  body = [
72
- '{"index" : "elastomer-msearch-test", "search_type" : "count"}',
72
+ '{"index" : "elastomer-msearch-test", "size" : 0}',
73
73
  '{"query" : {"match_all" : {}}}',
74
74
  '{"index" : "elastomer-msearch-test", "type": "doc2"}',
75
75
  '{"query" : {"match": {"author" : "grantr"}}}',
@@ -98,7 +98,7 @@ describe Elastomer::Client::MultiSearch do
98
98
  populate!
99
99
 
100
100
  h = $client.multi_search do |m|
101
- m.search({:query => { :match_all => {}}}, :index => @name, :search_type => :count)
101
+ m.search({:query => { :match_all => {}}}, :index => @name, :size => 0)
102
102
  m.search({:query => { :match => { "title" => "author" }}}, :index => @name, :type => "doc2")
103
103
  end
104
104
 
@@ -108,7 +108,7 @@ describe Elastomer::Client::MultiSearch do
108
108
  assert_equal 2, response2["hits"]["total"]
109
109
 
110
110
  h = @index.multi_search do |m|
111
- m.search({:query => { :match_all => {}}}, :search_type => :count)
111
+ m.search({:query => { :match_all => {}}}, :size => 0)
112
112
  m.search({:query => { :match => { "title" => "author" }}}, :type => "doc2")
113
113
  end
114
114
 
@@ -118,7 +118,7 @@ describe Elastomer::Client::MultiSearch do
118
118
  assert_equal 2, response2["hits"]["total"]
119
119
 
120
120
  h = @index.docs("doc1").multi_search do |m|
121
- m.search({:query => { :match_all => {}}}, :search_type => :count)
121
+ m.search({:query => { :match_all => {}}}, :size => 0)
122
122
  m.search({:query => { :match => { "title" => "logging" }}}, :type => "doc2")
123
123
  end
124
124
 
@@ -46,7 +46,7 @@ describe Elastomer::Client::Percolator do
46
46
  end
47
47
 
48
48
  it "cannot delete all percolators by providing a nil id" do
49
- assert_raises(ArgumentError) { percolator = @index.percolator nil }
49
+ assert_raises(ArgumentError) { @index.percolator nil }
50
50
  end
51
51
  end
52
52
  end
@@ -100,7 +100,7 @@ describe Elastomer::Client::Repository do
100
100
  response = repo.snapshot.get
101
101
  assert_equal ["test-snapshot"], response["snapshots"].collect { |info| info["snapshot"] }
102
102
 
103
- snapshot2 = create_snapshot(repo, "test-snapshot2")
103
+ create_snapshot(repo, "test-snapshot2")
104
104
  response = repo.snapshots.get
105
105
  snapshot_names = response["snapshots"].collect { |info| info["snapshot"] }
106
106
  assert_includes snapshot_names, "test-snapshot"
@@ -33,7 +33,15 @@ describe Elastomer::Client::Cluster do
33
33
  template = @template.get
34
34
  assert_equal [@name], template.keys
35
35
  assert_equal "test-elastomer*", template[@name]["template"]
36
- assert_equal "3", template[@name]["settings"]["index.number_of_shards"]
37
- end
38
36
 
37
+ if es_version_1_x?
38
+ assert_equal "3", template[@name]["settings"]["index.number_of_shards"]
39
+
40
+ elsif es_version_2_x?
41
+ assert_equal "3", template[@name]["settings"]["index"]["number_of_shards"]
42
+
43
+ else
44
+ assert false, "Unsupported Elasticsearch version #{$client.semantic_version}"
45
+ end
46
+ end
39
47
  end
@@ -50,7 +50,7 @@ describe Elastomer::Client::Warmer do
50
50
  assert_equal false, @index.warmer("test1").exists?
51
51
  assert_equal false, @index.warmer("test1").exist?
52
52
 
53
- h = @index.warmer("test1").create(:query => { :match_all => {}})
53
+ @index.warmer("test1").create(:query => { :match_all => {}})
54
54
  assert_equal true, @index.warmer("test1").exists?
55
55
  end
56
56
  end
@@ -28,7 +28,13 @@ describe Elastomer::Client do
28
28
  assert false, "exception was not raised when it should have been"
29
29
  rescue Elastomer::Client::Error => err
30
30
  assert_equal 404, err.status
31
- assert_equal "IndexMissingException[[non-existent-index] missing]", err.message
31
+ if es_version_1_x?
32
+ assert_equal "IndexMissingException[[non-existent-index] missing]", err.message
33
+ elsif es_version_2_x?
34
+ assert_match %r/index_not_found_exception/, err.message
35
+ else
36
+ fail "Elasticserch #{$client.version} is not supported"
37
+ end
32
38
  end
33
39
  end
34
40
 
@@ -140,11 +146,12 @@ describe Elastomer::Client do
140
146
  it "gets cluster info" do
141
147
  h = $client.info
142
148
  assert h.key?("name"), "expected cluster name to be returned"
143
- assert h.key?("status"), "expected cluster info status to be returned"
149
+ assert h.key?("version"), "expected cluster version information to be returned"
150
+ assert h["version"].key?("number"), "expected cluster version number to be returned"
144
151
  end
145
152
 
146
153
  it "gets cluster version" do
147
- assert_match /[\d\.]+/, $client.version
154
+ assert_match(/[\d\.]+/, $client.version)
148
155
  end
149
156
 
150
157
  it "gets semantic version" do
@@ -90,7 +90,18 @@ end
90
90
  #
91
91
  # Returns true if Elasticsearch version is 1.x.
92
92
  def es_version_1_x?
93
- $client.semantic_version >= "1.0.0"
93
+ $client.semantic_version >= "1.0.0" &&
94
+ $client.semantic_version < "2.0.0"
95
+ end
96
+
97
+ # Elasticsearch 2.0 changed some request formats in a non-backward-compatible
98
+ # way. Some tests need to know what version is running to structure requests
99
+ # as expected.
100
+ #
101
+ # Returns true if Elasticsearch version is 2.x.
102
+ def es_version_2_x?
103
+ $client.semantic_version >= "2.0.0" &&
104
+ $client.semantic_version < "3.0.0"
94
105
  end
95
106
 
96
107
  # Elasticsearch 1.4 changed the response body for interacting with index
@@ -135,7 +146,7 @@ def run_snapshot_tests?
135
146
  begin
136
147
  create_repo("elastomer-client-snapshot-test")
137
148
  $run_snapshot_tests = true
138
- rescue Elastomer::Client::Error => e
149
+ rescue Elastomer::Client::Error
139
150
  puts "Could not create a snapshot repo. Snapshot tests will be disabled."
140
151
  puts "To enable snapshot tests, add a path.repo setting to your elasticsearch.yml file."
141
152
  $run_snapshot_tests = false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastomer-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Pease
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-02-26 00:00:00.000000000 Z
12
+ date: 2016-08-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -267,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
267
  version: '0'
268
268
  requirements: []
269
269
  rubyforge_project:
270
- rubygems_version: 2.2.2
270
+ rubygems_version: 2.2.3
271
271
  signing_key:
272
272
  specification_version: 4
273
273
  summary: A library for interacting with Elasticsearch