elasticsearch-model 7.0.0 → 7.2.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/Gemfile +2 -2
- data/README.md +15 -27
- data/Rakefile +13 -14
- data/elasticsearch-model.gemspec +37 -40
- data/examples/activerecord_article.rb +1 -1
- data/examples/activerecord_associations.rb +2 -2
- data/examples/activerecord_custom_analyzer.rb +3 -3
- data/examples/activerecord_mapping_completion.rb +1 -1
- data/examples/activerecord_mapping_edge_ngram.rb +1 -1
- data/examples/couchbase_article.rb +1 -1
- data/examples/datamapper_article.rb +1 -1
- data/examples/mongoid_article.rb +1 -1
- data/examples/ohm_article.rb +1 -1
- data/examples/riak_article.rb +1 -1
- data/gemfiles/4.0.gemfile +4 -3
- data/lib/elasticsearch/model/adapter.rb +1 -1
- data/lib/elasticsearch/model/adapters/active_record.rb +2 -2
- data/lib/elasticsearch/model/adapters/default.rb +1 -1
- data/lib/elasticsearch/model/adapters/mongoid.rb +1 -1
- data/lib/elasticsearch/model/adapters/multiple.rb +1 -1
- data/lib/elasticsearch/model/callbacks.rb +1 -1
- data/lib/elasticsearch/model/client.rb +1 -6
- data/lib/elasticsearch/model/ext/active_record.rb +1 -1
- data/lib/elasticsearch/model/hash_wrapper.rb +1 -1
- data/lib/elasticsearch/model/importing.rb +11 -5
- data/lib/elasticsearch/model/indexing.rb +4 -4
- data/lib/elasticsearch/model/multimodel.rb +2 -2
- data/lib/elasticsearch/model/naming.rb +1 -1
- data/lib/elasticsearch/model/proxy.rb +7 -4
- data/lib/elasticsearch/model/response/aggregations.rb +1 -1
- data/lib/elasticsearch/model/response/base.rb +1 -1
- data/lib/elasticsearch/model/response/pagination/kaminari.rb +1 -1
- data/lib/elasticsearch/model/response/pagination/will_paginate.rb +1 -1
- data/lib/elasticsearch/model/response/pagination.rb +1 -1
- data/lib/elasticsearch/model/response/records.rb +1 -1
- data/lib/elasticsearch/model/response/result.rb +1 -1
- data/lib/elasticsearch/model/response/results.rb +2 -1
- data/lib/elasticsearch/model/response/suggestions.rb +1 -1
- data/lib/elasticsearch/model/response.rb +1 -1
- data/lib/elasticsearch/model/searching.rb +1 -1
- data/lib/elasticsearch/model/serializing.rb +1 -1
- data/lib/elasticsearch/model/version.rb +2 -2
- data/lib/elasticsearch/model.rb +4 -4
- data/spec/elasticsearch/model/adapter_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/associations_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/basic_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/dynamic_index_name_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/import_spec.rb +2 -13
- data/spec/elasticsearch/model/adapters/active_record/multi_model_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/namespaced_model_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/pagination_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/parent_child_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/serialization_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/default_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/mongoid/basic_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/mongoid/multi_model_spec.rb +12 -12
- data/spec/elasticsearch/model/adapters/mongoid_spec.rb +1 -1
- data/spec/elasticsearch/model/adapters/multiple_spec.rb +1 -1
- data/spec/elasticsearch/model/callbacks_spec.rb +1 -1
- data/spec/elasticsearch/model/client_spec.rb +4 -4
- data/spec/elasticsearch/model/hash_wrapper_spec.rb +1 -1
- data/spec/elasticsearch/model/importing_spec.rb +13 -1
- data/spec/elasticsearch/model/indexing_spec.rb +17 -42
- data/spec/elasticsearch/model/module_spec.rb +3 -2
- data/spec/elasticsearch/model/multimodel_spec.rb +1 -1
- data/spec/elasticsearch/model/naming_spec.rb +1 -1
- data/spec/elasticsearch/model/proxy_spec.rb +10 -2
- data/spec/elasticsearch/model/response/aggregations_spec.rb +1 -1
- data/spec/elasticsearch/model/response/base_spec.rb +1 -1
- data/spec/elasticsearch/model/response/pagination/kaminari_spec.rb +1 -1
- data/spec/elasticsearch/model/response/pagination/will_paginate_spec.rb +1 -1
- data/spec/elasticsearch/model/response/records_spec.rb +1 -1
- data/spec/elasticsearch/model/response/response_spec.rb +1 -1
- data/spec/elasticsearch/model/response/result_spec.rb +1 -1
- data/spec/elasticsearch/model/response/results_spec.rb +13 -1
- data/spec/elasticsearch/model/searching_search_request_spec.rb +1 -1
- data/spec/elasticsearch/model/searching_spec.rb +1 -1
- data/spec/elasticsearch/model/serializing_spec.rb +1 -1
- data/spec/spec_helper.rb +11 -3
- data/spec/support/app/answer.rb +2 -2
- data/spec/support/app/article.rb +1 -1
- data/spec/support/app/article_for_pagination.rb +1 -1
- data/spec/support/app/article_no_type.rb +1 -1
- data/spec/support/app/article_with_custom_serialization.rb +1 -1
- data/spec/support/app/article_with_dynamic_index_name.rb +1 -1
- data/spec/support/app/author.rb +1 -1
- data/spec/support/app/authorship.rb +1 -1
- data/spec/support/app/category.rb +1 -1
- data/spec/support/app/comment.rb +1 -1
- data/spec/support/app/episode.rb +1 -1
- data/spec/support/app/image.rb +1 -1
- data/spec/support/app/import_article.rb +1 -1
- data/spec/support/app/mongoid_article.rb +1 -1
- data/spec/support/app/namespaced_book.rb +1 -1
- data/spec/support/app/parent_and_child_searchable.rb +1 -1
- data/spec/support/app/post.rb +1 -1
- data/spec/support/app/question.rb +1 -1
- data/spec/support/app/searchable.rb +1 -1
- data/spec/support/app/series.rb +1 -1
- data/spec/support/app.rb +2 -2
- metadata +40 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1aecf263867f2176d7819eccd7e23f9b37bc85132223b8f64398ab85736ea75
|
4
|
+
data.tar.gz: af80ff000fcf065f2694141bfcdc282a947cfea05f5ece2f11a24897f5753039
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 246ae4f642a662a4a0c5fe6e26581c052c15ddf868d9b47b640c3f996e584056a8facc4004d61151647e67e6624d1bb16cad90a4513f303ad0afdeaf84b1eedf
|
7
|
+
data.tar.gz: 406c37164bb6fc16068d2edcf6e1183d9c2ba34420d57fab9d3f288416fd0d75173ecc4ad3f37236051d517db717c4fb37ae2d44663f87a6b28213637ea8f7a5
|
data/Gemfile
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -21,6 +21,6 @@ source 'https://rubygems.org'
|
|
21
21
|
gemspec
|
22
22
|
|
23
23
|
group :development, :testing do
|
24
|
-
gem 'rspec'
|
25
24
|
gem 'pry-nav'
|
25
|
+
gem 'rspec'
|
26
26
|
end
|
data/README.md
CHANGED
@@ -1,18 +1,14 @@
|
|
1
1
|
# Elasticsearch::Model
|
2
2
|
|
3
|
-
The `elasticsearch-model` library builds on top of the
|
4
|
-
the [`elasticsearch`](https://github.com/elastic/elasticsearch-ruby) library.
|
3
|
+
The `elasticsearch-model` library builds on top of the the [`elasticsearch`](https://github.com/elastic/elasticsearch-ruby) library.
|
5
4
|
|
6
|
-
It aims to simplify integration of Ruby classes ("models"), commonly found
|
7
|
-
e.g. in [Ruby on Rails](http://rubyonrails.org) applications, with the
|
8
|
-
[Elasticsearch](https://www.elastic.co) search and analytics engine.
|
5
|
+
It aims to simplify integration of Ruby classes ("models"), commonly found e.g. in [Ruby on Rails](http://rubyonrails.org) applications, with the [Elasticsearch](https://www.elastic.co) search and analytics engine.
|
9
6
|
|
10
7
|
## Compatibility
|
11
8
|
|
12
|
-
This library is compatible with Ruby
|
9
|
+
This library is compatible with Ruby 2.4 and higher.
|
13
10
|
|
14
|
-
The library version numbers follow the Elasticsearch major versions
|
15
|
-
is compatible with the Elasticsearch `master` branch, therefore, with the next major version.
|
11
|
+
The library version numbers follow the Elasticsearch major versions. The `main` branch is compatible with the latest Elasticsearch stack stable release.
|
16
12
|
|
17
13
|
| Rubygem | | Elasticsearch |
|
18
14
|
|:-------------:|:-:| :-----------: |
|
@@ -20,7 +16,7 @@ is compatible with the Elasticsearch `master` branch, therefore, with the next m
|
|
20
16
|
| 2.x | → | 2.x |
|
21
17
|
| 5.x | → | 5.x |
|
22
18
|
| 6.x | → | 6.x |
|
23
|
-
|
|
19
|
+
| main | → | 7.x |
|
24
20
|
|
25
21
|
## Installation
|
26
22
|
|
@@ -73,9 +69,7 @@ This will extend the model with functionality related to Elasticsearch.
|
|
73
69
|
|
74
70
|
#### Feature Extraction Pattern
|
75
71
|
|
76
|
-
Instead of including the `Elasticsearch::Model` module directly in your model,
|
77
|
-
you can include it in a "concern" or "trait" module, which is quite common pattern in Rails applications,
|
78
|
-
using e.g. `ActiveSupport::Concern` as the instrumentation:
|
72
|
+
Instead of including the `Elasticsearch::Model` module directly in your model, you can include it in a "concern" or "trait" module, which is quite common pattern in Rails applications, using e.g. `ActiveSupport::Concern` as the instrumentation:
|
79
73
|
|
80
74
|
```ruby
|
81
75
|
# In: app/models/concerns/searchable.rb
|
@@ -122,7 +116,7 @@ See the `Elasticsearch::Model` module documentation for technical information.
|
|
122
116
|
|
123
117
|
### The Elasticsearch client
|
124
118
|
|
125
|
-
The module will set up a [client](https://github.com/elastic/elasticsearch-ruby/tree/
|
119
|
+
The module will set up a [client](https://github.com/elastic/elasticsearch-ruby/tree/main/elasticsearch),
|
126
120
|
connected to `localhost:9200`, by default. You can access and use it as any other `Elasticsearch::Client`:
|
127
121
|
|
128
122
|
```ruby
|
@@ -145,7 +139,7 @@ Elasticsearch::Model.client = Elasticsearch::Client.new log: true
|
|
145
139
|
You might want to do this during your application bootstrap process, e.g. in a Rails initializer.
|
146
140
|
|
147
141
|
Please refer to the
|
148
|
-
[`elasticsearch-transport`](https://github.com/elastic/elasticsearch-ruby/tree/
|
142
|
+
[`elasticsearch-transport`](https://github.com/elastic/elasticsearch-ruby/tree/main/elasticsearch-transport)
|
149
143
|
library documentation for all the configuration options, and to the
|
150
144
|
[`elasticsearch-api`](http://rubydoc.info/gems/elasticsearch-api) library documentation
|
151
145
|
for information about the Ruby client API.
|
@@ -254,7 +248,7 @@ response.records.order(:title).to_a
|
|
254
248
|
The `records` method returns the real instances of your model, which is useful when you want to access your
|
255
249
|
model methods -- at the expense of slowing down your application, of course.
|
256
250
|
In most cases, working with `results` coming from Elasticsearch is sufficient, and much faster. See the
|
257
|
-
[`elasticsearch-rails`](https://github.com/elastic/elasticsearch-rails/tree/
|
251
|
+
[`elasticsearch-rails`](https://github.com/elastic/elasticsearch-rails/tree/main/elasticsearch-rails)
|
258
252
|
library for more information about compatibility with the Ruby on Rails framework.
|
259
253
|
|
260
254
|
When you want to access both the database `records` and search `results`, use the `each_with_hit`
|
@@ -290,11 +284,8 @@ NOTE: It is _not_ possible to chain other methods on top of the `records` object
|
|
290
284
|
|
291
285
|
#### Pagination
|
292
286
|
|
293
|
-
You can implement pagination with the `from` and `size` search parameters. However, search results
|
294
|
-
|
295
|
-
[`will_paginate`](https://github.com/mislav/will_paginate) gems.
|
296
|
-
(The pagination gems must be added before the Elasticsearch gems in your Gemfile,
|
297
|
-
or loaded first in your application.)
|
287
|
+
You can implement pagination with the `from` and `size` search parameters. However, search results can be automatically paginated with the [`kaminari`](http://rubygems.org/gems/kaminari) or [`will_paginate`](https://github.com/mislav/will_paginate) gems.
|
288
|
+
(The pagination gems must be added before the Elasticsearch gems in your Gemfile, or loaded first in your application.)
|
298
289
|
|
299
290
|
If Kaminari or WillPaginate is loaded, use the familiar paging methods:
|
300
291
|
|
@@ -322,8 +313,7 @@ Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model
|
|
322
313
|
|
323
314
|
#### The Elasticsearch DSL
|
324
315
|
|
325
|
-
In most situations, you'll want to pass the search definition
|
326
|
-
in the Elasticsearch [domain-specific language](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) to the client:
|
316
|
+
In most situations, you'll want to pass the search definition in the Elasticsearch [domain-specific language](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html) to the client:
|
327
317
|
|
328
318
|
```ruby
|
329
319
|
response = Article.search query: { match: { title: "Fox Dogs" } },
|
@@ -333,8 +323,7 @@ response.results.first.highlight.title
|
|
333
323
|
# ["Quick brown <em>fox</em>"]
|
334
324
|
```
|
335
325
|
|
336
|
-
You can pass any object which implements a `to_hash` method, which is called automatically,
|
337
|
-
so you can use a custom class or your favourite JSON builder to build the search definition:
|
326
|
+
You can pass any object which implements a `to_hash` method, which is called automatically, so you can use a custom class or your favourite JSON builder to build the search definition:
|
338
327
|
|
339
328
|
```ruby
|
340
329
|
require 'jbuilder'
|
@@ -354,8 +343,7 @@ response.results.first.title
|
|
354
343
|
# => "Quick brown fox"
|
355
344
|
```
|
356
345
|
|
357
|
-
Also, you can use the [**`elasticsearch-dsl`**](https://github.com/elastic/elasticsearch-ruby/tree/
|
358
|
-
the Elasticsearch Query DSL:
|
346
|
+
Also, you can use the [**`elasticsearch-dsl`**](https://github.com/elastic/elasticsearch-ruby/tree/main/elasticsearch-dsl) library, which provides a specialized Ruby API for the Elasticsearch Query DSL:
|
359
347
|
|
360
348
|
```ruby
|
361
349
|
require 'elasticsearch/dsl'
|
@@ -533,7 +521,7 @@ class Indexer
|
|
533
521
|
Logger = Sidekiq.logger.level == Logger::DEBUG ? Sidekiq.logger : nil
|
534
522
|
Client = Elasticsearch::Client.new host: 'localhost:9200', logger: Logger
|
535
523
|
|
536
|
-
def
|
524
|
+
def perform(operation, record_id)
|
537
525
|
logger.debug [operation, "ID: #{record_id}"]
|
538
526
|
|
539
527
|
case operation.to_s
|
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -15,29 +15,28 @@
|
|
15
15
|
# specific language governing permissions and limitations
|
16
16
|
# under the License.
|
17
17
|
|
18
|
-
require
|
18
|
+
require 'bundler/gem_tasks'
|
19
19
|
|
20
|
-
desc
|
21
|
-
task :
|
22
|
-
task :
|
20
|
+
desc 'Run unit tests'
|
21
|
+
task default: 'test:all'
|
22
|
+
task test: 'test:all'
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
GEMFILES = ['4.0.gemfile', '5.0.gemfile', '6.0.gemfile']
|
28
|
-
end
|
24
|
+
gemfiles = ['5.0.gemfile', '6.0.gemfile']
|
25
|
+
gemfiles << '4.0.gemfile' if RUBY_VERSION < '2.7'
|
26
|
+
GEMFILES = gemfiles.freeze
|
29
27
|
|
30
28
|
namespace :bundle do
|
31
29
|
desc 'Install dependencies for all the Gemfiles in /gemfiles. Optionally define env variable RAILS_VERSIONS. E.g. RAILS_VERSIONS=3.0,5.0'
|
32
30
|
task :install do
|
33
31
|
unless defined?(JRUBY_VERSION)
|
34
|
-
puts '-'*80
|
32
|
+
puts '-' * 80
|
35
33
|
gemfiles = ENV['RAILS_VERSIONS'] ? ENV['RAILS_VERSIONS'].split(',').map { |v| "#{v}.gemfile"} : GEMFILES
|
36
34
|
gemfiles.each do |gemfile|
|
37
|
-
|
35
|
+
puts "GEMFILE: #{gemfile}"
|
36
|
+
Bundler.with_unbundled_env do
|
38
37
|
sh "bundle install --gemfile #{File.expand_path('../gemfiles/'+gemfile, __FILE__)}"
|
39
38
|
end
|
40
|
-
puts '-'*80
|
39
|
+
puts '-' * 80
|
41
40
|
end
|
42
41
|
end
|
43
42
|
end
|
@@ -47,12 +46,12 @@ end
|
|
47
46
|
|
48
47
|
require 'rake/testtask'
|
49
48
|
namespace :test do
|
50
|
-
|
51
49
|
desc 'Run all tests. Optionally define env variable RAILS_VERSIONS. E.g. RAILS_VERSIONS=3.0,5.0'
|
52
50
|
task :all, [:rails_versions] do |task, args|
|
53
51
|
gemfiles = ENV['RAILS_VERSIONS'] ? ENV['RAILS_VERSIONS'].split(',').map {|v| "#{v}.gemfile"} : GEMFILES
|
54
52
|
puts '-' * 80
|
55
53
|
gemfiles.each do |gemfile|
|
54
|
+
puts "GEMFILE: #{gemfile}"
|
56
55
|
sh "BUNDLE_GEMFILE='#{File.expand_path("../gemfiles/#{gemfile}", __FILE__)}' " +
|
57
56
|
" bundle exec rspec"
|
58
57
|
puts '-' * 80
|
data/elasticsearch-model.gemspec
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -16,56 +16,53 @@
|
|
16
16
|
# under the License.
|
17
17
|
|
18
18
|
# coding: utf-8
|
19
|
-
|
19
|
+
|
20
|
+
lib = File.expand_path('lib', __dir__)
|
20
21
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
21
22
|
require 'elasticsearch/model/version'
|
22
23
|
|
23
24
|
Gem::Specification.new do |s|
|
24
|
-
s.name =
|
25
|
+
s.name = 'elasticsearch-model'
|
25
26
|
s.version = Elasticsearch::Model::VERSION
|
26
|
-
s.authors = [
|
27
|
-
s.email = [
|
28
|
-
s.description =
|
29
|
-
s.summary =
|
30
|
-
s.homepage =
|
31
|
-
s.license =
|
27
|
+
s.authors = ['Karel Minarik']
|
28
|
+
s.email = ['karel.minarik@elasticsearch.org']
|
29
|
+
s.description = 'ActiveModel/Record integrations for Elasticsearch.'
|
30
|
+
s.summary = 'ActiveModel/Record integrations for Elasticsearch.'
|
31
|
+
s.homepage = 'https://github.com/elasticsearch/elasticsearch-rails/'
|
32
|
+
s.license = 'Apache 2'
|
32
33
|
|
33
34
|
s.files = `git ls-files`.split($/)
|
34
35
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
35
36
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
36
|
-
s.require_paths = [
|
37
|
-
|
38
|
-
s.extra_rdoc_files = [ "README.md", "LICENSE.txt" ]
|
39
|
-
s.rdoc_options = [ "--charset=UTF-8" ]
|
40
|
-
|
41
|
-
s.required_ruby_version = ">= 1.9.3"
|
42
|
-
|
43
|
-
s.add_dependency "elasticsearch", '> 1'
|
44
|
-
s.add_dependency "activesupport", '> 3'
|
45
|
-
s.add_dependency "hashie"
|
46
|
-
|
47
|
-
s.add_development_dependency "bundler"
|
48
|
-
s.add_development_dependency "rake", "~> 11.1"
|
49
|
-
|
50
|
-
s.add_development_dependency "elasticsearch-extensions"
|
37
|
+
s.require_paths = ['lib']
|
51
38
|
|
52
|
-
s.
|
53
|
-
s.
|
39
|
+
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
40
|
+
s.rdoc_options = ['--charset=UTF-8']
|
54
41
|
|
55
|
-
s.
|
56
|
-
s.add_development_dependency "kaminari"
|
57
|
-
s.add_development_dependency "will_paginate"
|
42
|
+
s.required_ruby_version = '>= 2.4'
|
58
43
|
|
59
|
-
s.
|
60
|
-
s.
|
61
|
-
s.
|
62
|
-
s.add_development_dependency "mocha"
|
63
|
-
s.add_development_dependency "turn"
|
64
|
-
s.add_development_dependency "yard"
|
65
|
-
s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION)
|
66
|
-
s.add_development_dependency "pry"
|
44
|
+
s.add_dependency 'activesupport', '> 3'
|
45
|
+
s.add_dependency 'elasticsearch', '~> 7'
|
46
|
+
s.add_dependency 'hashie'
|
67
47
|
|
68
|
-
s.add_development_dependency
|
69
|
-
s.add_development_dependency
|
70
|
-
s.add_development_dependency
|
48
|
+
s.add_development_dependency 'activemodel', '> 3'
|
49
|
+
s.add_development_dependency 'bundler'
|
50
|
+
s.add_development_dependency 'cane'
|
51
|
+
s.add_development_dependency 'kaminari'
|
52
|
+
s.add_development_dependency 'minitest'
|
53
|
+
s.add_development_dependency 'mocha'
|
54
|
+
s.add_development_dependency 'pry'
|
55
|
+
s.add_development_dependency 'rake', '~> 12'
|
56
|
+
s.add_development_dependency 'require-prof'
|
57
|
+
s.add_development_dependency 'shoulda-context'
|
58
|
+
s.add_development_dependency 'simplecov'
|
59
|
+
s.add_development_dependency 'test-unit'
|
60
|
+
s.add_development_dependency 'turn'
|
61
|
+
s.add_development_dependency 'will_paginate'
|
62
|
+
s.add_development_dependency 'yard'
|
63
|
+
unless defined?(JRUBY_VERSION)
|
64
|
+
s.add_development_dependency 'oj'
|
65
|
+
s.add_development_dependency 'ruby-prof'
|
66
|
+
s.add_development_dependency 'sqlite3'
|
67
|
+
end
|
71
68
|
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -81,7 +81,7 @@ end
|
|
81
81
|
# ----- Elasticsearch client setup ----------------------------------------------------------------
|
82
82
|
|
83
83
|
Elasticsearch::Model.client = Elasticsearch::Client.new log: true
|
84
|
-
Elasticsearch::Model.client.transport.logger.formatter = proc { |s, d, p, m| "\e[2m#{m}\n\e[0m" }
|
84
|
+
Elasticsearch::Model.client.transport.transport.logger.formatter = proc { |s, d, p, m| "\e[2m#{m}\n\e[0m" }
|
85
85
|
|
86
86
|
# ----- Search integration ------------------------------------------------------------------------
|
87
87
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -37,8 +37,8 @@ ActiveRecord::Schema.define(version: 1) do
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
Elasticsearch::Model.client.transport.logger = ActiveSupport::Logger.new(STDOUT)
|
41
|
-
Elasticsearch::Model.client.transport.logger.formatter = lambda { |s, d, p, m| "#{m.ansi(:faint)}\n" }
|
40
|
+
Elasticsearch::Model.client.transport.transport.logger = ActiveSupport::Logger.new(STDOUT)
|
41
|
+
Elasticsearch::Model.client.transport.transport.logger.formatter = lambda { |s, d, p, m| "#{m.ansi(:faint)}\n" }
|
42
42
|
|
43
43
|
class Article < ActiveRecord::Base
|
44
44
|
include Elasticsearch::Model
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
data/examples/mongoid_article.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
data/examples/ohm_article.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
data/examples/riak_article.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
data/gemfiles/4.0.gemfile
CHANGED
@@ -26,10 +26,11 @@ gemspec path: '../'
|
|
26
26
|
|
27
27
|
gem 'activemodel', '~> 4'
|
28
28
|
gem 'activerecord', '~> 4'
|
29
|
-
gem 'sqlite3', '> 1.3', '< 1.4' unless defined?(JRUBY_VERSION)
|
30
29
|
gem 'mongoid', '~> 5'
|
30
|
+
gem 'sqlite3', '> 1.3', '< 1.4' unless defined?(JRUBY_VERSION)
|
31
31
|
|
32
32
|
group :development, :testing do
|
33
|
-
gem '
|
33
|
+
gem 'bigdecimal', '~> 1'
|
34
34
|
gem 'pry-nav'
|
35
|
-
|
35
|
+
gem 'rspec'
|
36
|
+
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -102,7 +102,7 @@ module Elasticsearch
|
|
102
102
|
scope = scope.__send__(named_scope) if named_scope
|
103
103
|
scope = scope.instance_exec(&query) if query
|
104
104
|
|
105
|
-
scope.find_in_batches(options) do |batch|
|
105
|
+
scope.find_in_batches(**options) do |batch|
|
106
106
|
batch = self.__send__(preprocess, batch) if preprocess
|
107
107
|
yield(batch) if batch.present?
|
108
108
|
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -17,13 +17,10 @@
|
|
17
17
|
|
18
18
|
module Elasticsearch
|
19
19
|
module Model
|
20
|
-
|
21
20
|
# Contains an `Elasticsearch::Client` instance
|
22
21
|
#
|
23
22
|
module Client
|
24
|
-
|
25
23
|
module ClassMethods
|
26
|
-
|
27
24
|
# Get the client for a specific model class
|
28
25
|
#
|
29
26
|
# @example Get the client for `Article` and perform API request
|
@@ -48,7 +45,6 @@ module Elasticsearch
|
|
48
45
|
end
|
49
46
|
|
50
47
|
module InstanceMethods
|
51
|
-
|
52
48
|
# Get or set the client for a specific model instance
|
53
49
|
#
|
54
50
|
# @example Get the client for a specific record and perform API request
|
@@ -72,7 +68,6 @@ module Elasticsearch
|
|
72
68
|
@client = client
|
73
69
|
end
|
74
70
|
end
|
75
|
-
|
76
71
|
end
|
77
72
|
end
|
78
73
|
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# not use this file except in compliance with the License.
|
7
7
|
# You may obtain a copy of the License at
|
8
8
|
#
|
9
|
-
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
10
|
#
|
11
11
|
# Unless required by applicable law or agreed to in writing,
|
12
12
|
# software distributed under the License is distributed on an
|
@@ -143,6 +143,7 @@ module Elasticsearch
|
|
143
143
|
target_index = options.delete(:index) || index_name
|
144
144
|
target_type = options.delete(:type) || document_type
|
145
145
|
transform = options.delete(:transform) || __transform
|
146
|
+
pipeline = options.delete(:pipeline)
|
146
147
|
return_value = options.delete(:return) || 'count'
|
147
148
|
|
148
149
|
unless transform.respond_to?(:call)
|
@@ -158,10 +159,15 @@ module Elasticsearch
|
|
158
159
|
end
|
159
160
|
|
160
161
|
__find_in_batches(options) do |batch|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
162
|
+
params = {
|
163
|
+
index: target_index,
|
164
|
+
type: target_type,
|
165
|
+
body: __batch_to_bulk(batch, transform)
|
166
|
+
}
|
167
|
+
|
168
|
+
params[:pipeline] = pipeline if pipeline
|
169
|
+
|
170
|
+
response = client.bulk params
|
165
171
|
|
166
172
|
yield response if block_given?
|
167
173
|
|