es-elasticity 0.8.0 → 0.8.1
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/.travis.yml +6 -2
- data/CHANGELOG +3 -0
- data/Gemfile +2 -0
- data/README.md +5 -0
- data/elasticity.gemspec +2 -1
- data/lib/elasticity/scrollable_search.rb +15 -0
- data/lib/elasticity/search.rb +1 -1
- data/lib/elasticity/strategies/alias_index.rb +6 -6
- data/lib/elasticity/version.rb +1 -1
- data/lib/elasticity.rb +1 -0
- data/spec/functional/persistence_spec.rb +24 -26
- data/spec/rspec_config.rb +2 -0
- data/spec/units/search_spec.rb +1 -1
- data/spec/units/strategies/single_index_spec.rb +6 -5
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 273883b20e8b274c5029f67bc93985b5f2405348
|
4
|
+
data.tar.gz: 5960c883e06d2bcfa72e501f3fc4dbd0cd941c46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d9ecb7b3ede09bc2ea49b64cd3752fd8ca502b2381aee55e9dd3ce421f1a1c72f7d0dcb1a02fa8d8af5bdc66d9110f7cfc1025396d85fbb8a4126ab3e0b140b
|
7
|
+
data.tar.gz: d10e1f5da32facb6a8ecaead082f71add59a876de3e6220db95fb0984a50a09d2540d9cfd83e3fc3fa3186a70b745ba1c4b50dfedc17b2ba1c32f0f2ebd0ea85
|
data/.travis.yml
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
language: ruby
|
2
2
|
before_install:
|
3
3
|
- gem update bundler
|
4
|
+
- curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.deb && sudo dpkg -i --force-confnew elasticsearch-5.1.1.deb && sudo service elasticsearch restart
|
4
5
|
rvm:
|
5
6
|
- 2.2.2
|
6
7
|
- 2.2.3
|
7
|
-
|
8
|
-
|
8
|
+
addons:
|
9
|
+
apt:
|
10
|
+
packages:
|
11
|
+
- oracle-java8-set-default
|
9
12
|
before_script:
|
10
13
|
- sleep 5
|
11
14
|
env:
|
12
15
|
global:
|
13
16
|
- secure: "HZa3D2GGwC6Jl062LJulbWZLTCieeBFC3FOJrArC5ul7ACGR5CEtANe0/UTnIf/Ad40p7I5VhiTdNFTcHunTbNc7Ae7dE5fOkiBHtxo/zwgpvHZK0iPvIoxsSfdcHobHeaF7NvfcXUkYUKcdRUyplHdB56eHQqYPVsah66K/4XA="
|
17
|
+
sudo: true
|
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -28,6 +28,11 @@ Or install it yourself as:
|
|
28
28
|
|
29
29
|
## Usage
|
30
30
|
|
31
|
+
### Version Support
|
32
|
+
This gem has [elasticsearch-ruby](https://github.com/elastic/elasticsearch-ruby) as a dependency. In order to use different versions of elasticsearch you will need to match your version of elasticsearch-ruby to the version of elasticsearch you want to use ([see here](https://github.com/elastic/elasticsearch-ruby#compatibility). Elasticity should work across all versions of elastisearch-ruby, although they have not all been tested so there are likely edge cases.
|
33
|
+
|
34
|
+
Currently tests are run on travis ci against elasticsearch 5.1.1 with elasticsearch-ruby 5.0.3.
|
35
|
+
|
31
36
|
### Configuration
|
32
37
|
|
33
38
|
It is recommended you use Typhoeus for HTTP connections to Elasticsearch.
|
data/elasticity.gemspec
CHANGED
@@ -25,10 +25,11 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "simplecov", "~> 0.7.1"
|
26
26
|
spec.add_development_dependency "oj"
|
27
27
|
spec.add_development_dependency "pry"
|
28
|
+
spec.add_development_dependency "byebug"
|
28
29
|
spec.add_development_dependency "codeclimate-test-reporter"
|
29
30
|
spec.add_development_dependency "redis"
|
30
31
|
|
31
32
|
spec.add_dependency "activesupport", ">= 4.0.0", "< 6"
|
32
33
|
spec.add_dependency "activemodel", ">= 4.0.0", "< 6"
|
33
|
-
spec.add_dependency "elasticsearch", "
|
34
|
+
spec.add_dependency "elasticsearch", ">= 1.0"
|
34
35
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Elasticity
|
2
|
+
class ScrollableSearch
|
3
|
+
def self.search_type
|
4
|
+
if elasticsearch_gem_version < Gem::Version.create("2.0")
|
5
|
+
:scan
|
6
|
+
else
|
7
|
+
:query_then_fetch
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.elasticsearch_gem_version
|
12
|
+
Gem.loaded_specs["elasticsearch"].version
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/elasticity/search.rb
CHANGED
@@ -177,7 +177,7 @@ module Elasticity
|
|
177
177
|
def search
|
178
178
|
return @search if defined?(@search)
|
179
179
|
args = @search_definition.to_search_args
|
180
|
-
args = args.merge(search_type:
|
180
|
+
args = args.merge(search_type: ScrollableSearch.search_type, size: @size, scroll: @scroll)
|
181
181
|
@search = @client.search(args)
|
182
182
|
end
|
183
183
|
end
|
@@ -52,9 +52,8 @@ module Elasticity
|
|
52
52
|
})
|
53
53
|
|
54
54
|
@client.index_flush(index: original_index)
|
55
|
-
cursor = @client.search index: original_index, search_type:
|
55
|
+
cursor = @client.search index: original_index, search_type: ScrollableSearch.search_type, scroll: '10m', size: 100
|
56
56
|
loop do
|
57
|
-
cursor = @client.scroll(scroll_id: cursor['_scroll_id'], scroll: '1m')
|
58
57
|
hits = cursor['hits']['hits']
|
59
58
|
break if hits.empty?
|
60
59
|
|
@@ -84,6 +83,7 @@ module Elasticity
|
|
84
83
|
end
|
85
84
|
|
86
85
|
@client.bulk(body: ops) unless ops.empty?
|
86
|
+
cursor = @client.scroll(scroll_id: cursor['_scroll_id'], scroll: '1m')
|
87
87
|
end
|
88
88
|
|
89
89
|
# Update aliases to only point to the new index.
|
@@ -103,9 +103,8 @@ module Elasticity
|
|
103
103
|
})
|
104
104
|
|
105
105
|
@client.index_flush(index: new_index)
|
106
|
-
cursor = @client.search index: new_index, search_type:
|
106
|
+
cursor = @client.search index: new_index, search_type: ScrollableSearch.search_type, scroll: '1m', size: 100
|
107
107
|
loop do
|
108
|
-
cursor = @client.scroll(scroll_id: cursor['_scroll_id'], scroll: '1m')
|
109
108
|
hits = cursor['hits']['hits']
|
110
109
|
break if hits.empty?
|
111
110
|
|
@@ -116,6 +115,7 @@ module Elasticity
|
|
116
115
|
end
|
117
116
|
|
118
117
|
@client.bulk(body: ops)
|
118
|
+
cursor = @client.scroll(scroll_id: cursor['_scroll_id'], scroll: '1m')
|
119
119
|
end
|
120
120
|
|
121
121
|
@client.index_flush(index: original_index)
|
@@ -149,13 +149,13 @@ module Elasticity
|
|
149
149
|
end
|
150
150
|
|
151
151
|
def main_indexes
|
152
|
-
@client.
|
152
|
+
@client.index_get_alias(index: "#{@main_alias}-*", name: @main_alias).keys
|
153
153
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
154
154
|
[]
|
155
155
|
end
|
156
156
|
|
157
157
|
def update_indexes
|
158
|
-
@client.
|
158
|
+
@client.index_get_alias(index: "#{@main_alias}-*", name: @update_alias).keys
|
159
159
|
rescue Elasticsearch::Transport::Transport::Errors::NotFound
|
160
160
|
[]
|
161
161
|
end
|
data/lib/elasticity/version.rb
CHANGED
data/lib/elasticity.rb
CHANGED
@@ -34,6 +34,7 @@ module Elasticity
|
|
34
34
|
autoload :MultiSearch, "elasticity/multi_search"
|
35
35
|
autoload :Search, "elasticity/search"
|
36
36
|
autoload :Strategies, "elasticity/strategies"
|
37
|
+
autoload :ScrollableSearch, "elasticity/scrollable_search"
|
37
38
|
|
38
39
|
def self.configure
|
39
40
|
@config = Config.new
|
@@ -1,4 +1,8 @@
|
|
1
1
|
RSpec.describe "Persistence", elasticsearch: true do
|
2
|
+
def random_birthdate
|
3
|
+
Time.at(0.0 + rand * (Time.now.to_f - 0.0.to_f))
|
4
|
+
end
|
5
|
+
|
2
6
|
describe "single index strategy" do
|
3
7
|
subject do
|
4
8
|
Class.new(Elasticity::Document) do
|
@@ -13,7 +17,7 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
13
17
|
|
14
18
|
c.mapping = {
|
15
19
|
properties: {
|
16
|
-
name: { type: "string" },
|
20
|
+
name: { type: "string", index: "not_analyzed" },
|
17
21
|
birthdate: { type: "date" },
|
18
22
|
},
|
19
23
|
}
|
@@ -50,23 +54,20 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
50
54
|
|
51
55
|
subject.flush_index
|
52
56
|
|
53
|
-
results = subject.search(
|
57
|
+
results = subject.search({})
|
54
58
|
expect(results.total).to eq 2
|
55
59
|
|
56
|
-
expect(
|
57
|
-
expect(results[1]).to eq(mari)
|
58
|
-
|
59
|
-
expect(subject.search({query: {filtered: { query: { match_all: {} } } } }).count).to eq(2)
|
60
|
+
expect(subject.search({ query: { match_all: {} } }).count).to eq(2)
|
60
61
|
|
61
62
|
john.update
|
62
63
|
mari.delete
|
63
64
|
|
64
65
|
subject.flush_index
|
65
66
|
|
66
|
-
results = subject.search(
|
67
|
+
results = subject.search({})
|
67
68
|
expect(results.total).to eq 1
|
68
69
|
|
69
|
-
expect(results[0]).to eq(john)
|
70
|
+
expect(results[0].name).to eq(john.name)
|
70
71
|
end
|
71
72
|
end
|
72
73
|
|
@@ -85,7 +86,7 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
85
86
|
c.strategy = Elasticity::Strategies::SingleIndex
|
86
87
|
c.document_type = "cat"
|
87
88
|
c.mapping = { properties: {
|
88
|
-
name: { type: "string" },
|
89
|
+
name: { type: "string", index: "not_analyzed" },
|
89
90
|
age: { type: "integer" }
|
90
91
|
} }
|
91
92
|
end
|
@@ -103,7 +104,7 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
103
104
|
c.strategy = Elasticity::Strategies::SingleIndex
|
104
105
|
c.document_type = "dog"
|
105
106
|
c.mapping = { properties: {
|
106
|
-
name: { type: "string" },
|
107
|
+
name: { type: "string", index: "not_analyzed" },
|
107
108
|
age: { type: "integer" },
|
108
109
|
hungry: { type: "boolean" }
|
109
110
|
} }
|
@@ -163,10 +164,9 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
163
164
|
c.strategy = Elasticity::Strategies::AliasIndex
|
164
165
|
|
165
166
|
c.mapping = {
|
166
|
-
_id: { path: "id" },
|
167
167
|
properties: {
|
168
168
|
id: { type: "integer" },
|
169
|
-
name: { type: "string" },
|
169
|
+
name: { type: "string", index: "not_analyzed" },
|
170
170
|
birthdate: { type: "date" },
|
171
171
|
},
|
172
172
|
}
|
@@ -194,15 +194,14 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
194
194
|
end
|
195
195
|
|
196
196
|
it "remaps to a different index transparently" do
|
197
|
-
john = subject.new(id: 1, name: "John", birthdate: "1985-10-31", sort: ['john'])
|
198
|
-
mari = subject.new(id: 2, name: "Mari", birthdate: "1986-09-24", sort: ['mari'])
|
197
|
+
john = subject.new(_id: 1, id: 1, name: "John", birthdate: "1985-10-31", sort: ['john'])
|
198
|
+
mari = subject.new(_id: 2, id: 2, name: "Mari", birthdate: "1986-09-24", sort: ['mari'])
|
199
199
|
|
200
200
|
john.update
|
201
201
|
mari.update
|
202
202
|
|
203
203
|
subject.flush_index
|
204
|
-
|
205
|
-
results = subject.search(sort: :name)
|
204
|
+
results = subject.search({})
|
206
205
|
expect(results.total).to eq 2
|
207
206
|
|
208
207
|
subject.remap!
|
@@ -212,16 +211,16 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
212
211
|
|
213
212
|
subject.flush_index
|
214
213
|
|
215
|
-
results = subject.search(
|
214
|
+
results = subject.search({})
|
216
215
|
expect(results.total).to eq 1
|
217
216
|
|
218
|
-
expect(results[0]).to eq(john)
|
217
|
+
expect(results[0].name).to eq(john.name)
|
219
218
|
end
|
220
219
|
|
221
220
|
it "handles in between state while remapping" do
|
222
221
|
number_of_docs = 2000
|
223
222
|
docs = number_of_docs.times.map do |i|
|
224
|
-
subject.new(id: i, name: "User #{i}", birthdate:
|
223
|
+
subject.new(id: i, name: "User #{i}", birthdate: random_birthdate).tap(&:update)
|
225
224
|
end
|
226
225
|
|
227
226
|
t = Thread.new { subject.remap! }
|
@@ -233,20 +232,20 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
233
232
|
to_delete.each(&:delete)
|
234
233
|
|
235
234
|
20.times.map do |i|
|
236
|
-
subject.new(id: i + number_of_docs, name: "User #{i + docs.length}", birthdate:
|
235
|
+
subject.new(id: i + number_of_docs, name: "User #{i + docs.length}", birthdate: random_birthdate).tap(&:update)
|
237
236
|
end
|
238
237
|
|
239
238
|
t.join
|
240
239
|
|
241
240
|
subject.flush_index
|
242
|
-
results = subject.search(
|
241
|
+
results = subject.search({})
|
243
242
|
expect(results.total).to eq(2010)
|
244
243
|
end
|
245
244
|
|
246
245
|
it "recover from remap interrupts" do
|
247
246
|
number_of_docs = 2000
|
248
247
|
docs = number_of_docs.times.map do |i|
|
249
|
-
subject.new(id: i, name: "User #{i}", birthdate:
|
248
|
+
subject.new(id: i, name: "User #{i}", birthdate: random_birthdate).tap(&:update)
|
250
249
|
end
|
251
250
|
|
252
251
|
t = Thread.new { subject.remap! }
|
@@ -258,20 +257,20 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
258
257
|
to_delete.each(&:delete)
|
259
258
|
|
260
259
|
20.times.map do |i|
|
261
|
-
subject.new(id: i + number_of_docs, name: "User #{i + docs.length}", birthdate:
|
260
|
+
subject.new(id: i + number_of_docs, name: "User #{i + docs.length}", birthdate: random_birthdate).tap(&:update)
|
262
261
|
end
|
263
262
|
|
264
263
|
t.raise("Test Interrupt")
|
265
264
|
expect { t.join }.to raise_error("Test Interrupt")
|
266
265
|
|
267
266
|
subject.flush_index
|
268
|
-
results = subject.search(
|
267
|
+
results = subject.search({})
|
269
268
|
expect(results.total).to eq(2010)
|
270
269
|
end
|
271
270
|
|
272
271
|
it "bulk indexes, updates and delete" do
|
273
272
|
docs = 2000.times.map do |i|
|
274
|
-
subject.new(id: i, name: "User #{i}", birthdate:
|
273
|
+
subject.new(_id: i, id: i, name: "User #{i}", birthdate: random_birthdate).tap(&:update)
|
275
274
|
end
|
276
275
|
|
277
276
|
subject.bulk_index(docs)
|
@@ -289,7 +288,6 @@ RSpec.describe "Persistence", elasticsearch: true do
|
|
289
288
|
|
290
289
|
results = subject.search(from: 0, size: 3000)
|
291
290
|
expect(results.total).to eq 2000
|
292
|
-
|
293
291
|
expect(subject.search({ query: { match: { name: "Updated" } } } ).count).to eq(2000)
|
294
292
|
|
295
293
|
subject.bulk_delete(results.documents.map(&:_id))
|
data/spec/rspec_config.rb
CHANGED
data/spec/units/search_spec.rb
CHANGED
@@ -108,7 +108,7 @@ RSpec.describe "Search" do
|
|
108
108
|
end
|
109
109
|
|
110
110
|
it "searches using scan&scroll" do
|
111
|
-
expect(client).to receive(:search).with(index: index_name, type: document_type, body: body, search_type:
|
111
|
+
expect(client).to receive(:search).with(index: index_name, type: document_type, body: body, search_type: :query_then_fetch, size: 100, scroll: "1m").and_return(scan_response)
|
112
112
|
expect(client).to receive(:scroll).with(scroll_id: "abc123", scroll: "1m").and_return(scroll_response)
|
113
113
|
expect(client).to receive(:scroll).with(scroll_id: "abc456", scroll: "1m").and_return(empty_response)
|
114
114
|
|
@@ -8,7 +8,7 @@ RSpec.describe Elasticity::Strategies::SingleIndex, elasticsearch: true do
|
|
8
8
|
"mappings" => {
|
9
9
|
"document" => {
|
10
10
|
"properties" => {
|
11
|
-
"name" => { "type" => "
|
11
|
+
"name" => { "type" => "text" }
|
12
12
|
}
|
13
13
|
}
|
14
14
|
}
|
@@ -54,14 +54,14 @@ RSpec.describe Elasticity::Strategies::SingleIndex, elasticsearch: true do
|
|
54
54
|
results_a = subject.bulk do |b|
|
55
55
|
b.index "document", 1, name: "foo"
|
56
56
|
end
|
57
|
-
expect(results_a
|
57
|
+
expect(results_a["errors"]).to be_falsey
|
58
58
|
|
59
59
|
results_b = subject.bulk do |b|
|
60
60
|
b.index "document", 2, name: "bar"
|
61
61
|
b.delete "document", 1
|
62
62
|
end
|
63
63
|
|
64
|
-
expect(results_b
|
64
|
+
expect(results_b["errors"]).to be_falsey
|
65
65
|
|
66
66
|
subject.flush
|
67
67
|
|
@@ -69,11 +69,12 @@ RSpec.describe Elasticity::Strategies::SingleIndex, elasticsearch: true do
|
|
69
69
|
expect(subject.get_document("document", 2)).to eq({"_index"=>"test_index_name", "_type"=>"document", "_id"=>"2", "_version"=>1, "found"=>true, "_source"=>{"name"=>"bar"}})
|
70
70
|
end
|
71
71
|
|
72
|
-
it "allows deleting by
|
72
|
+
it "allows deleting by query" do
|
73
73
|
subject.index_document("document", 1, name: "foo")
|
74
74
|
subject.index_document("document", 2, name: "bar")
|
75
75
|
|
76
|
-
subject.
|
76
|
+
subject.flush
|
77
|
+
subject.delete_by_query("document", query: { term: { name: "foo" } })
|
77
78
|
|
78
79
|
expect { subject.get_document("document", 1) }.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
|
79
80
|
expect { subject.get_document("document", 2) }.to_not raise_error
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: es-elasticity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Kochenburger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: byebug
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: codeclimate-test-reporter
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,16 +180,16 @@ dependencies:
|
|
166
180
|
name: elasticsearch
|
167
181
|
requirement: !ruby/object:Gem::Requirement
|
168
182
|
requirements:
|
169
|
-
- - "
|
183
|
+
- - ">="
|
170
184
|
- !ruby/object:Gem::Version
|
171
|
-
version: 1.0
|
185
|
+
version: '1.0'
|
172
186
|
type: :runtime
|
173
187
|
prerelease: false
|
174
188
|
version_requirements: !ruby/object:Gem::Requirement
|
175
189
|
requirements:
|
176
|
-
- - "
|
190
|
+
- - ">="
|
177
191
|
- !ruby/object:Gem::Version
|
178
|
-
version: 1.0
|
192
|
+
version: '1.0'
|
179
193
|
description: Elasticity provides a higher level abstraction on top of [elasticsearch-ruby](https://github.com/elasticsearch/elasticsearch-ruby)
|
180
194
|
gem
|
181
195
|
email:
|
@@ -208,6 +222,7 @@ files:
|
|
208
222
|
- lib/elasticity/log_subscriber.rb
|
209
223
|
- lib/elasticity/multi_search.rb
|
210
224
|
- lib/elasticity/railtie.rb
|
225
|
+
- lib/elasticity/scrollable_search.rb
|
211
226
|
- lib/elasticity/search.rb
|
212
227
|
- lib/elasticity/segmented_document.rb
|
213
228
|
- lib/elasticity/strategies.rb
|
@@ -243,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
258
|
version: '0'
|
244
259
|
requirements: []
|
245
260
|
rubyforge_project:
|
246
|
-
rubygems_version: 2.
|
261
|
+
rubygems_version: 2.4.5
|
247
262
|
signing_key:
|
248
263
|
specification_version: 4
|
249
264
|
summary: ActiveModel-based library for working with Elasticsearch
|
@@ -257,4 +272,3 @@ test_files:
|
|
257
272
|
- spec/units/multi_search_spec.rb
|
258
273
|
- spec/units/search_spec.rb
|
259
274
|
- spec/units/strategies/single_index_spec.rb
|
260
|
-
has_rdoc:
|