elasticsearch-model 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +1 -1
- data/elasticsearch-model.gemspec +1 -1
- data/gemfiles/3.0.gemfile +1 -0
- data/gemfiles/4.0.gemfile +1 -0
- data/lib/elasticsearch/model.rb +1 -0
- data/lib/elasticsearch/model/adapters/active_record.rb +7 -0
- data/lib/elasticsearch/model/importing.rb +2 -2
- data/lib/elasticsearch/model/indexing.rb +1 -1
- data/lib/elasticsearch/model/proxy.rb +9 -0
- data/lib/elasticsearch/model/response.rb +8 -2
- data/lib/elasticsearch/model/response/pagination.rb +2 -2
- data/lib/elasticsearch/model/response/records.rb +3 -0
- data/lib/elasticsearch/model/response/suggestions.rb +13 -0
- data/lib/elasticsearch/model/version.rb +1 -1
- data/test/integration/active_record_associations_test.rb +20 -1
- data/test/integration/active_record_basic_test.rb +17 -5
- data/test/unit/adapter_active_record_test.rb +10 -0
- data/test/unit/indexing_test.rb +8 -0
- data/test/unit/proxy_test.rb +11 -0
- data/test/unit/response_pagination_kaminari_test.rb +44 -0
- data/test/unit/response_test.rb +28 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6ee0c4e1aa23d578d305367880c00683f8722eb
|
4
|
+
data.tar.gz: e55f679c7973d5381225ca46514dd3d901a65aa4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1bb3398d41326acb683669d4becd275f2f6bb9c4ef4ac8148d810c056d8e59df3ee0647f0dabaeb681d29cd94eff8fee7498fbc09cd3ec91a9abd2986bce953
|
7
|
+
data.tar.gz: 7c7f7e24165e04f86494f5458944155cfa4c36f1e15acd58ede28d27372172885f74c74d1af16d6786960c0402eb0f58a24f223b58a3f865a61cb4a9f5851878
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 0.1.9
|
2
|
+
|
3
|
+
* Added a `suggest` method to wrap the suggestions in response
|
4
|
+
* Added the `:includes` option to Adapter::ActiveRecord::Records for eagerly loading associated models
|
5
|
+
* Delegated `max_pages` method properly for Kaminari's `next_page`
|
6
|
+
* Fixed `#dup` behaviour for Elasticsearch::Model
|
7
|
+
* Fixed typos in the README and examples
|
8
|
+
|
1
9
|
## 0.1.8
|
2
10
|
|
3
11
|
* Added "default per page" methods for pagination with multi model searches
|
data/README.md
CHANGED
@@ -229,7 +229,7 @@ response.records.records.class
|
|
229
229
|
# => ActiveRecord::Relation::ActiveRecord_Relation_Article
|
230
230
|
```
|
231
231
|
|
232
|
-
The ordering of the records by score will be preserved, unless you
|
232
|
+
The ordering of the records by score will be preserved, unless you explicitly specify a different
|
233
233
|
order in your model query language:
|
234
234
|
|
235
235
|
```ruby
|
data/elasticsearch-model.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_dependency "hashie"
|
29
29
|
|
30
30
|
s.add_development_dependency "bundler", "~> 1.3"
|
31
|
-
s.add_development_dependency "rake"
|
31
|
+
s.add_development_dependency "rake", "< 11.0"
|
32
32
|
|
33
33
|
s.add_development_dependency "elasticsearch-extensions"
|
34
34
|
|
data/gemfiles/3.0.gemfile
CHANGED
data/gemfiles/4.0.gemfile
CHANGED
data/lib/elasticsearch/model.rb
CHANGED
@@ -31,6 +31,7 @@ require 'elasticsearch/model/response/result'
|
|
31
31
|
require 'elasticsearch/model/response/results'
|
32
32
|
require 'elasticsearch/model/response/records'
|
33
33
|
require 'elasticsearch/model/response/pagination'
|
34
|
+
require 'elasticsearch/model/response/suggestions'
|
34
35
|
|
35
36
|
require 'elasticsearch/model/ext/active_record'
|
36
37
|
|
@@ -10,10 +10,17 @@ module Elasticsearch
|
|
10
10
|
lambda { |klass| !!defined?(::ActiveRecord::Base) && klass.respond_to?(:ancestors) && klass.ancestors.include?(::ActiveRecord::Base) }
|
11
11
|
|
12
12
|
module Records
|
13
|
+
attr_writer :options
|
14
|
+
|
15
|
+
def options
|
16
|
+
@options ||= {}
|
17
|
+
end
|
18
|
+
|
13
19
|
# Returns an `ActiveRecord::Relation` instance
|
14
20
|
#
|
15
21
|
def records
|
16
22
|
sql_records = klass.where(klass.primary_key => ids)
|
23
|
+
sql_records = sql_records.includes(self.options[:includes]) if self.options[:includes]
|
17
24
|
|
18
25
|
# Re-order records based on the order from Elasticsearch hits
|
19
26
|
# by redefining `to_a`, unless the user has called `order()`
|
@@ -84,7 +84,7 @@ module Elasticsearch
|
|
84
84
|
#
|
85
85
|
# class Article
|
86
86
|
# # ...
|
87
|
-
# def enrich(batch)
|
87
|
+
# def self.enrich(batch)
|
88
88
|
# batch.each do |item|
|
89
89
|
# item.metadata = MyAPI.get_metadata(item.id)
|
90
90
|
# end
|
@@ -92,7 +92,7 @@ module Elasticsearch
|
|
92
92
|
# end
|
93
93
|
# end
|
94
94
|
#
|
95
|
-
# Article.import preprocess: enrich
|
95
|
+
# Article.import preprocess: :enrich
|
96
96
|
#
|
97
97
|
# @example Return an array of error elements instead of the number of errors, eg.
|
98
98
|
# to try importing these records again
|
@@ -52,7 +52,7 @@ module Elasticsearch
|
|
52
52
|
|
53
53
|
if block_given?
|
54
54
|
@mapping[name][:type] ||= 'object'
|
55
|
-
properties = TYPES_WITH_EMBEDDED_PROPERTIES.include?(@mapping[name][:type]) ? :properties : :fields
|
55
|
+
properties = TYPES_WITH_EMBEDDED_PROPERTIES.include?(@mapping[name][:type].to_s) ? :properties : :fields
|
56
56
|
|
57
57
|
@mapping[name][properties] ||= {}
|
58
58
|
|
@@ -66,6 +66,15 @@ module Elasticsearch
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
# @overload dup
|
70
|
+
#
|
71
|
+
# Returns a copy of this object. Resets the __elasticsearch__ proxy so
|
72
|
+
# the duplicate will build its own proxy.
|
73
|
+
def initialize_dup(_)
|
74
|
+
@__elasticsearch__ = nil
|
75
|
+
super
|
76
|
+
end
|
77
|
+
|
69
78
|
# Common module for the proxy classes
|
70
79
|
#
|
71
80
|
module Base
|
@@ -44,8 +44,8 @@ module Elasticsearch
|
|
44
44
|
#
|
45
45
|
# @return [Records]
|
46
46
|
#
|
47
|
-
def records
|
48
|
-
@records ||= Records.new(klass, self)
|
47
|
+
def records(options = {})
|
48
|
+
@records ||= Records.new(klass, self, options)
|
49
49
|
end
|
50
50
|
|
51
51
|
# Returns the "took" time
|
@@ -71,6 +71,12 @@ module Elasticsearch
|
|
71
71
|
def aggregations
|
72
72
|
response['aggregations'] ? Hashie::Mash.new(response['aggregations']) : nil
|
73
73
|
end
|
74
|
+
|
75
|
+
# Returns a Hashie::Mash of the suggestions
|
76
|
+
#
|
77
|
+
def suggestions
|
78
|
+
Suggestions.new(response['suggest'])
|
79
|
+
end
|
74
80
|
end
|
75
81
|
end
|
76
82
|
end
|
@@ -20,8 +20,8 @@ module Elasticsearch
|
|
20
20
|
Elasticsearch::Model::Response::Results.__send__ :include, ::Kaminari::PageScopeMethods
|
21
21
|
Elasticsearch::Model::Response::Records.__send__ :include, ::Kaminari::PageScopeMethods
|
22
22
|
|
23
|
-
Elasticsearch::Model::Response::Results.__send__ :delegate, :limit_value, :offset_value, :total_count, to: :response
|
24
|
-
Elasticsearch::Model::Response::Records.__send__ :delegate, :limit_value, :offset_value, :total_count, to: :response
|
23
|
+
Elasticsearch::Model::Response::Results.__send__ :delegate, :limit_value, :offset_value, :total_count, :max_pages, to: :response
|
24
|
+
Elasticsearch::Model::Response::Records.__send__ :delegate, :limit_value, :offset_value, :total_count, :max_pages, to: :response
|
25
25
|
|
26
26
|
base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
27
27
|
# Define the `page` Kaminari method
|
@@ -12,6 +12,8 @@ module Elasticsearch
|
|
12
12
|
|
13
13
|
delegate :each, :empty?, :size, :slice, :[], :to_a, :to_ary, to: :records
|
14
14
|
|
15
|
+
attr_accessor :options
|
16
|
+
|
15
17
|
include Base
|
16
18
|
|
17
19
|
# @see Base#initialize
|
@@ -25,6 +27,7 @@ module Elasticsearch
|
|
25
27
|
metaclass = class << self; self; end
|
26
28
|
metaclass.__send__ :include, adapter.records_mixin
|
27
29
|
|
30
|
+
self.options = options
|
28
31
|
self
|
29
32
|
end
|
30
33
|
|
@@ -133,11 +133,16 @@ module Elasticsearch
|
|
133
133
|
# Include the search integration
|
134
134
|
#
|
135
135
|
Post.__send__ :include, Searchable
|
136
|
+
Comment.__send__ :include, Elasticsearch::Model
|
137
|
+
Comment.__send__ :include, Elasticsearch::Model::Callbacks
|
136
138
|
|
137
|
-
# ----- Reset the
|
139
|
+
# ----- Reset the indices -----------------------------------------------------------------
|
138
140
|
|
139
141
|
Post.delete_all
|
140
142
|
Post.__elasticsearch__.create_index! force: true
|
143
|
+
|
144
|
+
Comment.delete_all
|
145
|
+
Comment.__elasticsearch__.create_index! force: true
|
141
146
|
end
|
142
147
|
|
143
148
|
should "index and find a document" do
|
@@ -300,6 +305,20 @@ module Elasticsearch
|
|
300
305
|
assert_equal 0, Post.search('categories:One').size
|
301
306
|
assert_equal 1, Post.search('categories:Updated').size
|
302
307
|
end
|
308
|
+
|
309
|
+
should "eagerly load associated records" do
|
310
|
+
post_1 = Post.create(title: 'One')
|
311
|
+
post_2 = Post.create(title: 'Two')
|
312
|
+
post_1.comments.create text: 'First comment'
|
313
|
+
post_1.comments.create text: 'Second comment'
|
314
|
+
|
315
|
+
Comment.__elasticsearch__.refresh_index!
|
316
|
+
|
317
|
+
records = Comment.search('first').records(includes: :post)
|
318
|
+
|
319
|
+
assert records.first.association(:post).loaded?, "The associated Post should be eagerly loaded"
|
320
|
+
assert_equal 'One', records.first.post.title
|
321
|
+
end
|
303
322
|
end
|
304
323
|
|
305
324
|
end
|
@@ -22,11 +22,18 @@ module Elasticsearch
|
|
22
22
|
|
23
23
|
settings index: { number_of_shards: 1, number_of_replicas: 0 } do
|
24
24
|
mapping do
|
25
|
-
indexes :title,
|
26
|
-
indexes :body,
|
27
|
-
indexes :created_at,
|
25
|
+
indexes :title, type: 'string', analyzer: 'snowball'
|
26
|
+
indexes :body, type: 'string'
|
27
|
+
indexes :created_at, type: 'date'
|
28
28
|
end
|
29
29
|
end
|
30
|
+
|
31
|
+
def as_indexed_json(options = {})
|
32
|
+
attributes
|
33
|
+
.symbolize_keys
|
34
|
+
.slice(:title, :body, :created_at)
|
35
|
+
.merge(suggest_title: title)
|
36
|
+
end
|
30
37
|
end
|
31
38
|
|
32
39
|
Article.delete_all
|
@@ -210,10 +217,15 @@ module Elasticsearch
|
|
210
217
|
|
211
218
|
should "allow dot access to response" do
|
212
219
|
response = Article.search query: { match: { title: { query: 'test' } } },
|
213
|
-
aggregations: { dates: { date_histogram: { field: 'created_at', interval: 'hour' } } }
|
220
|
+
aggregations: { dates: { date_histogram: { field: 'created_at', interval: 'hour' } } },
|
221
|
+
suggest: { text: 'tezt', title: { term: { field: 'title', suggest_mode: 'always' } } }
|
214
222
|
|
215
223
|
response.response.respond_to?(:aggregations)
|
216
|
-
assert_equal 2, response.
|
224
|
+
assert_equal 2, response.aggregations.dates.buckets.first.doc_count
|
225
|
+
|
226
|
+
response.response.respond_to?(:suggest)
|
227
|
+
assert_equal 1, response.suggestions.title.first.options.size
|
228
|
+
assert_equal ['test'], response.suggestions.terms
|
217
229
|
end
|
218
230
|
end
|
219
231
|
|
@@ -51,6 +51,16 @@ class Elasticsearch::Model::AdapterActiveRecordTest < Test::Unit::TestCase
|
|
51
51
|
instance.load
|
52
52
|
end
|
53
53
|
|
54
|
+
should "load the records with its submodels when using :includes" do
|
55
|
+
klass = mock('class', primary_key: :some_key, where: @records)
|
56
|
+
@records.expects(:includes).with([:submodel]).at_least_once
|
57
|
+
|
58
|
+
instance = DummyClassForActiveRecord.new
|
59
|
+
instance.expects(:klass).returns(klass).at_least_once
|
60
|
+
instance.options[:includes] = [:submodel]
|
61
|
+
instance.records
|
62
|
+
end
|
63
|
+
|
54
64
|
should "reorder the records based on hits order" do
|
55
65
|
@records.instance_variable_set(:@records, @records)
|
56
66
|
|
data/test/unit/indexing_test.rb
CHANGED
@@ -127,6 +127,10 @@ class Elasticsearch::Model::IndexingTest < Test::Unit::TestCase
|
|
127
127
|
indexes :bar
|
128
128
|
end
|
129
129
|
|
130
|
+
mappings.indexes :foo_nested_as_symbol, type: :nested do
|
131
|
+
indexes :bar
|
132
|
+
end
|
133
|
+
|
130
134
|
# Object is the default when `type` is missing and there's a block passed
|
131
135
|
#
|
132
136
|
assert_equal 'object', mappings.to_hash[:mytype][:properties][:foo][:type]
|
@@ -140,6 +144,10 @@ class Elasticsearch::Model::IndexingTest < Test::Unit::TestCase
|
|
140
144
|
assert_equal 'nested', mappings.to_hash[:mytype][:properties][:foo_nested][:type]
|
141
145
|
assert_equal 'string', mappings.to_hash[:mytype][:properties][:foo_nested][:properties][:bar][:type]
|
142
146
|
assert_nil mappings.to_hash[:mytype][:properties][:foo_nested][:fields]
|
147
|
+
|
148
|
+
assert_equal :nested, mappings.to_hash[:mytype][:properties][:foo_nested_as_symbol][:type]
|
149
|
+
assert_not_nil mappings.to_hash[:mytype][:properties][:foo_nested_as_symbol][:properties]
|
150
|
+
assert_nil mappings.to_hash[:mytype][:properties][:foo_nested_as_symbol][:fields]
|
143
151
|
end
|
144
152
|
end
|
145
153
|
|
data/test/unit/proxy_test.rb
CHANGED
@@ -69,6 +69,17 @@ class Elasticsearch::Model::SearchTest < Test::Unit::TestCase
|
|
69
69
|
assert_equal 'insta barr', DummyProxyModel.new.__elasticsearch__.bar
|
70
70
|
end
|
71
71
|
|
72
|
+
should "reset the proxy target for duplicates" do
|
73
|
+
model = DummyProxyModel.new
|
74
|
+
model_target = model.__elasticsearch__.target
|
75
|
+
duplicate = model.dup
|
76
|
+
duplicate_target = duplicate.__elasticsearch__.target
|
77
|
+
|
78
|
+
assert_not_equal model, duplicate
|
79
|
+
assert_equal model, model_target
|
80
|
+
assert_equal duplicate, duplicate_target
|
81
|
+
end
|
82
|
+
|
72
83
|
should "return the proxy class from instance proxy" do
|
73
84
|
assert_equal Elasticsearch::Model::Proxy::ClassMethodsProxy, DummyProxyModel.new.__elasticsearch__.class.class
|
74
85
|
end
|
@@ -194,6 +194,17 @@ class Elasticsearch::Model::ResponsePaginationKaminariTest < Test::Unit::TestCas
|
|
194
194
|
|
195
195
|
assert_equal 5, @response.page(5).results.current_page
|
196
196
|
end
|
197
|
+
|
198
|
+
should "return previous page and next page" do
|
199
|
+
assert_equal nil, @response.page(1).results.prev_page
|
200
|
+
assert_equal 2, @response.page(1).results.next_page
|
201
|
+
|
202
|
+
assert_equal 3, @response.page(4).results.prev_page
|
203
|
+
assert_equal nil, @response.page(4).results.next_page
|
204
|
+
|
205
|
+
assert_equal 2, @response.page(3).results.prev_page
|
206
|
+
assert_equal 4, @response.page(3).results.next_page
|
207
|
+
end
|
197
208
|
end
|
198
209
|
|
199
210
|
context "records" do
|
@@ -207,6 +218,17 @@ class Elasticsearch::Model::ResponsePaginationKaminariTest < Test::Unit::TestCas
|
|
207
218
|
|
208
219
|
assert_equal 5, @response.page(5).records.current_page
|
209
220
|
end
|
221
|
+
|
222
|
+
should "return previous page and next page" do
|
223
|
+
assert_equal nil, @response.page(1).records.prev_page
|
224
|
+
assert_equal 2, @response.page(1).records.next_page
|
225
|
+
|
226
|
+
assert_equal 3, @response.page(4).records.prev_page
|
227
|
+
assert_equal nil, @response.page(4).records.next_page
|
228
|
+
|
229
|
+
assert_equal 2, @response.page(3).records.prev_page
|
230
|
+
assert_equal 4, @response.page(3).records.next_page
|
231
|
+
end
|
210
232
|
end
|
211
233
|
end
|
212
234
|
|
@@ -371,6 +393,17 @@ class Elasticsearch::Model::ResponsePaginationKaminariTest < Test::Unit::TestCas
|
|
371
393
|
|
372
394
|
assert_equal 5, @response.page(5).results.current_page
|
373
395
|
end
|
396
|
+
|
397
|
+
should "return previous page and next page" do
|
398
|
+
assert_equal nil, @response.page(1).results.prev_page
|
399
|
+
assert_equal 2, @response.page(1).results.next_page
|
400
|
+
|
401
|
+
assert_equal 3, @response.page(4).results.prev_page
|
402
|
+
assert_equal nil, @response.page(4).results.next_page
|
403
|
+
|
404
|
+
assert_equal 2, @response.page(3).results.prev_page
|
405
|
+
assert_equal 4, @response.page(3).results.next_page
|
406
|
+
end
|
374
407
|
end
|
375
408
|
|
376
409
|
context "records" do
|
@@ -384,6 +417,17 @@ class Elasticsearch::Model::ResponsePaginationKaminariTest < Test::Unit::TestCas
|
|
384
417
|
|
385
418
|
assert_equal 5, @response.page(5).records.current_page
|
386
419
|
end
|
420
|
+
|
421
|
+
should "return previous page and next page" do
|
422
|
+
assert_equal nil, @response.page(1).records.prev_page
|
423
|
+
assert_equal 2, @response.page(1).records.next_page
|
424
|
+
|
425
|
+
assert_equal 3, @response.page(4).records.prev_page
|
426
|
+
assert_equal nil, @response.page(4).records.next_page
|
427
|
+
|
428
|
+
assert_equal 2, @response.page(3).records.prev_page
|
429
|
+
assert_equal 4, @response.page(3).records.next_page
|
430
|
+
end
|
387
431
|
end
|
388
432
|
end
|
389
433
|
end
|
data/test/unit/response_test.rb
CHANGED
@@ -8,7 +8,8 @@ class Elasticsearch::Model::ResponseTest < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
RESPONSE = { 'took' => '5', 'timed_out' => false, '_shards' => {'one' => 'OK'}, 'hits' => { 'hits' => [] },
|
11
|
-
'aggregations' => {'foo' => {'bar' => 10}}
|
11
|
+
'aggregations' => {'foo' => {'bar' => 10}},
|
12
|
+
'suggest' => {'my_suggest' => [ { 'text' => 'foo', 'options' => [ { 'text' => 'Foo', 'score' => 2.0 }, { 'text' => 'Bar', 'score' => 1.0 } ] } ]}}
|
12
13
|
|
13
14
|
setup do
|
14
15
|
@search = Elasticsearch::Model::Searching::SearchRequest.new OriginClass, '*'
|
@@ -73,5 +74,31 @@ class Elasticsearch::Model::ResponseTest < Test::Unit::TestCase
|
|
73
74
|
assert_kind_of Hashie::Mash, response.aggregations.foo
|
74
75
|
assert_equal 10, response.aggregations.foo.bar
|
75
76
|
end
|
77
|
+
|
78
|
+
should "access the suggest" do
|
79
|
+
@search.expects(:execute!).returns(RESPONSE)
|
80
|
+
|
81
|
+
response = Elasticsearch::Model::Response::Response.new OriginClass, @search
|
82
|
+
|
83
|
+
assert_respond_to response, :suggestions
|
84
|
+
assert_kind_of Hashie::Mash, response.suggestions
|
85
|
+
assert_equal 'Foo', response.suggestions.my_suggest.first.options.first.text
|
86
|
+
end
|
87
|
+
|
88
|
+
should "return array of terms from the suggestions" do
|
89
|
+
@search.expects(:execute!).returns(RESPONSE)
|
90
|
+
response = Elasticsearch::Model::Response::Response.new OriginClass, @search
|
91
|
+
|
92
|
+
assert_not_empty response.suggestions
|
93
|
+
assert_equal [ 'Foo', 'Bar' ], response.suggestions.terms
|
94
|
+
end
|
95
|
+
|
96
|
+
should "return empty array as suggest terms when there are no suggestions" do
|
97
|
+
@search.expects(:execute!).returns({})
|
98
|
+
response = Elasticsearch::Model::Response::Response.new OriginClass, @search
|
99
|
+
|
100
|
+
assert_empty response.suggestions
|
101
|
+
assert_equal [], response.suggestions.terms
|
102
|
+
end
|
76
103
|
end
|
77
104
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karel Minarik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: elasticsearch
|
@@ -70,16 +70,16 @@ dependencies:
|
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "<"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
75
|
+
version: '11.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "<"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
82
|
+
version: '11.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: elasticsearch-extensions
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -364,6 +364,7 @@ files:
|
|
364
364
|
- lib/elasticsearch/model/response/records.rb
|
365
365
|
- lib/elasticsearch/model/response/result.rb
|
366
366
|
- lib/elasticsearch/model/response/results.rb
|
367
|
+
- lib/elasticsearch/model/response/suggestions.rb
|
367
368
|
- lib/elasticsearch/model/searching.rb
|
368
369
|
- lib/elasticsearch/model/serializing.rb
|
369
370
|
- lib/elasticsearch/model/version.rb
|