elasticsearch-model 7.0.0 → 7.1.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/Rakefile +5 -10
- data/elasticsearch-model.gemspec +1 -1
- data/lib/elasticsearch/model/importing.rb +10 -4
- data/lib/elasticsearch/model/version.rb +1 -1
- data/spec/elasticsearch/model/adapters/active_record/import_spec.rb +1 -12
- data/spec/elasticsearch/model/adapters/mongoid/multi_model_spec.rb +11 -11
- data/spec/elasticsearch/model/importing_spec.rb +12 -0
- data/spec/spec_helper.rb +10 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b92bc72627459220a08885cccd70605e9123b44f23561438fa71d11bf6e64ff5
|
4
|
+
data.tar.gz: 0bf5e719b65b1dda889680f7058676207522293acee1285a6d4d8af6877556fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2088cc1213eb7f0f6a078029c386f3f41ecdcf60ba88c0e5d8a6aaccea3564cc4a0c34128fd14b0ac6631d34b8d3ecea46ec901fcad6874b052f3766f6ce6850
|
7
|
+
data.tar.gz: 0721dac95902a27db984c68a49b91cd6b9ad8ceda1c5da3ade39acf5a083ea20423757d4d2391d34103532a1768e673f53f89d086d8c4c1e7437e9c66ef75612
|
data/README.md
CHANGED
@@ -533,7 +533,7 @@ class Indexer
|
|
533
533
|
Logger = Sidekiq.logger.level == Logger::DEBUG ? Sidekiq.logger : nil
|
534
534
|
Client = Elasticsearch::Client.new host: 'localhost:9200', logger: Logger
|
535
535
|
|
536
|
-
def
|
536
|
+
def perform(operation, record_id)
|
537
537
|
logger.debug [operation, "ID: #{record_id}"]
|
538
538
|
|
539
539
|
case operation.to_s
|
data/Rakefile
CHANGED
@@ -15,17 +15,13 @@
|
|
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
|
-
GEMFILES = ['3.0.gemfile', '4.0.gemfile', '5.0.gemfile']
|
26
|
-
else
|
27
|
-
GEMFILES = ['4.0.gemfile', '5.0.gemfile', '6.0.gemfile']
|
28
|
-
end
|
24
|
+
GEMFILES = ['4.0.gemfile', '5.0.gemfile', '6.0.gemfile']
|
29
25
|
|
30
26
|
namespace :bundle do
|
31
27
|
desc 'Install dependencies for all the Gemfiles in /gemfiles. Optionally define env variable RAILS_VERSIONS. E.g. RAILS_VERSIONS=3.0,5.0'
|
@@ -47,7 +43,6 @@ end
|
|
47
43
|
|
48
44
|
require 'rake/testtask'
|
49
45
|
namespace :test do
|
50
|
-
|
51
46
|
desc 'Run all tests. Optionally define env variable RAILS_VERSIONS. E.g. RAILS_VERSIONS=3.0,5.0'
|
52
47
|
task :all, [:rails_versions] do |task, args|
|
53
48
|
gemfiles = ENV['RAILS_VERSIONS'] ? ENV['RAILS_VERSIONS'].split(',').map {|v| "#{v}.gemfile"} : GEMFILES
|
data/elasticsearch-model.gemspec
CHANGED
@@ -45,7 +45,7 @@ Gem::Specification.new do |s|
|
|
45
45
|
s.add_dependency "hashie"
|
46
46
|
|
47
47
|
s.add_development_dependency "bundler"
|
48
|
-
s.add_development_dependency "rake", "~>
|
48
|
+
s.add_development_dependency "rake", "~> 12"
|
49
49
|
|
50
50
|
s.add_development_dependency "elasticsearch-extensions"
|
51
51
|
|
@@ -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
|
|
@@ -18,7 +18,6 @@
|
|
18
18
|
require 'spec_helper'
|
19
19
|
|
20
20
|
describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
21
|
-
|
22
21
|
before(:all) do
|
23
22
|
ActiveRecord::Schema.define(:version => 1) do
|
24
23
|
create_table :import_articles do |t|
|
@@ -43,11 +42,9 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
43
42
|
end
|
44
43
|
|
45
44
|
describe '#import' do
|
46
|
-
|
47
45
|
context 'when no search criteria is specified' do
|
48
|
-
|
49
46
|
before do
|
50
|
-
10.times { |i| ImportArticle.create! title: 'Test', views:
|
47
|
+
10.times { |i| ImportArticle.create! title: 'Test', views: i.to_s }
|
51
48
|
ImportArticle.import
|
52
49
|
ImportArticle.__elasticsearch__.refresh_index!
|
53
50
|
end
|
@@ -58,7 +55,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
58
55
|
end
|
59
56
|
|
60
57
|
context 'when batch size is specified' do
|
61
|
-
|
62
58
|
before do
|
63
59
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
64
60
|
end
|
@@ -82,7 +78,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
82
78
|
end
|
83
79
|
|
84
80
|
context 'when a scope is specified' do
|
85
|
-
|
86
81
|
before do
|
87
82
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
88
83
|
ImportArticle.import(scope: 'popular', force: true)
|
@@ -95,7 +90,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
95
90
|
end
|
96
91
|
|
97
92
|
context 'when a query is specified' do
|
98
|
-
|
99
93
|
before do
|
100
94
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
101
95
|
ImportArticle.import(query: -> { where('views >= 3') })
|
@@ -108,7 +102,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
108
102
|
end
|
109
103
|
|
110
104
|
context 'when there are invalid documents' do
|
111
|
-
|
112
105
|
let!(:result) do
|
113
106
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
114
107
|
new_article
|
@@ -132,7 +125,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
132
125
|
end
|
133
126
|
|
134
127
|
context 'when a transform proc is specified' do
|
135
|
-
|
136
128
|
before do
|
137
129
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
138
130
|
ImportArticle.import( transform: ->(a) {{ index: { data: { name: a.title, foo: 'BAR' } }}} )
|
@@ -151,7 +143,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
151
143
|
end
|
152
144
|
|
153
145
|
context 'when the model has a default scope' do
|
154
|
-
|
155
146
|
around(:all) do |example|
|
156
147
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
157
148
|
ImportArticle.instance_eval { default_scope { where('views > 3') } }
|
@@ -170,7 +161,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
170
161
|
end
|
171
162
|
|
172
163
|
context 'when there is a default scope and a query specified' do
|
173
|
-
|
174
164
|
around(:all) do |example|
|
175
165
|
10.times { |i| ImportArticle.create! title: 'Test', views: "#{i}" }
|
176
166
|
ImportArticle.instance_eval { default_scope { where('views > 3') } }
|
@@ -189,7 +179,6 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Importing' do
|
|
189
179
|
end
|
190
180
|
|
191
181
|
context 'when the batch is empty' do
|
192
|
-
|
193
182
|
before do
|
194
183
|
ImportArticle.delete_all
|
195
184
|
ImportArticle.import
|
@@ -24,10 +24,10 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Multimodel', if: test_mong
|
|
24
24
|
|
25
25
|
begin
|
26
26
|
ActiveRecord::Schema.define(:version => 1) do
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
create_table Episode.table_name do |t|
|
28
|
+
t.string :name
|
29
|
+
t.datetime :created_at, :default => 'NOW()'
|
30
|
+
end
|
31
31
|
end
|
32
32
|
rescue
|
33
33
|
end
|
@@ -36,22 +36,22 @@ describe 'Elasticsearch::Model::Adapter::ActiveRecord Multimodel', if: test_mong
|
|
36
36
|
before do
|
37
37
|
clear_tables(Episode, Image)
|
38
38
|
Episode.__elasticsearch__.create_index! force: true
|
39
|
-
Episode.create name:
|
40
|
-
Episode.create name:
|
41
|
-
Episode.create name:
|
39
|
+
Episode.create name: 'TheEpisode'
|
40
|
+
Episode.create name: 'A great Episode'
|
41
|
+
Episode.create name: 'The greatest Episode'
|
42
42
|
Episode.__elasticsearch__.refresh_index!
|
43
43
|
|
44
44
|
Image.__elasticsearch__.create_index! force: true
|
45
|
-
Image.create! name:
|
46
|
-
Image.create! name:
|
47
|
-
Image.create! name:
|
45
|
+
Image.create! name: 'The Image'
|
46
|
+
Image.create! name: 'A great Image'
|
47
|
+
Image.create! name: 'The greatest Image'
|
48
48
|
Image.__elasticsearch__.refresh_index!
|
49
49
|
Image.__elasticsearch__.client.cluster.health wait_for_status: 'yellow'
|
50
50
|
end
|
51
51
|
|
52
52
|
after do
|
53
53
|
[Episode, Image].each do |model|
|
54
|
-
model.__elasticsearch__.client.delete_by_query(index: model.index_name, q: '*')
|
54
|
+
model.__elasticsearch__.client.delete_by_query(index: model.index_name, q: '*', body: {})
|
55
55
|
model.delete_all
|
56
56
|
model.__elasticsearch__.refresh_index!
|
57
57
|
end
|
@@ -227,5 +227,17 @@ describe Elasticsearch::Model::Importing do
|
|
227
227
|
end
|
228
228
|
end
|
229
229
|
end
|
230
|
+
|
231
|
+
context 'when a pipeline is provided as an options' do
|
232
|
+
|
233
|
+
before do
|
234
|
+
expect(DummyImportingModel).to receive(:client).and_return(client)
|
235
|
+
expect(client).to receive(:bulk).with(body: nil, index: 'foo', type: 'foo', pipeline: 'my-pipeline').and_return(response)
|
236
|
+
end
|
237
|
+
|
238
|
+
it 'uses the pipeline option' do
|
239
|
+
expect(DummyImportingModel.import(pipeline: 'my-pipeline')).to eq(0)
|
240
|
+
end
|
241
|
+
end
|
230
242
|
end
|
231
243
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -81,8 +81,16 @@ end
|
|
81
81
|
# @since 6.0.1
|
82
82
|
def clear_indices(*models)
|
83
83
|
models.each do |model|
|
84
|
-
begin
|
85
|
-
|
84
|
+
begin
|
85
|
+
Elasticsearch::Model.client.delete_by_query(
|
86
|
+
index: model.index_name,
|
87
|
+
q: '*',
|
88
|
+
body: {}
|
89
|
+
)
|
90
|
+
rescue
|
91
|
+
end
|
92
|
+
end
|
93
|
+
true
|
86
94
|
end
|
87
95
|
|
88
96
|
# Delete all documents from the tables of the provided list of models.
|
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: 7.0.
|
4
|
+
version: 7.1.0.pre
|
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: 2020-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: elasticsearch
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '12'
|
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: '
|
82
|
+
version: '12'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: elasticsearch-extensions
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -452,11 +452,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
452
452
|
version: 1.9.3
|
453
453
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
454
454
|
requirements:
|
455
|
-
- - "
|
455
|
+
- - ">"
|
456
456
|
- !ruby/object:Gem::Version
|
457
|
-
version:
|
457
|
+
version: 1.3.1
|
458
458
|
requirements: []
|
459
|
-
rubygems_version: 3.
|
459
|
+
rubygems_version: 3.1.2
|
460
460
|
signing_key:
|
461
461
|
specification_version: 4
|
462
462
|
summary: ActiveModel/Record integrations for Elasticsearch.
|