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
@@ -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
|
@@ -270,7 +270,7 @@ module Elasticsearch
|
|
270
270
|
def index_exists?(options={})
|
271
271
|
target_index = options[:index] || self.index_name
|
272
272
|
|
273
|
-
self.client.indices.exists(index: target_index
|
273
|
+
self.client.indices.exists(index: target_index, ignore: 404)
|
274
274
|
end
|
275
275
|
|
276
276
|
# Deletes the index with corresponding name
|
@@ -290,7 +290,7 @@ module Elasticsearch
|
|
290
290
|
self.client.indices.delete index: target_index
|
291
291
|
rescue Exception => e
|
292
292
|
if e.class.to_s =~ /NotFound/ && options[:force]
|
293
|
-
client.transport.logger.debug("[!!!] Index does not exist (#{e.class})") if client.transport.logger
|
293
|
+
client.transport.transport.logger.debug("[!!!] Index does not exist (#{e.class})") if client.transport.transport.logger
|
294
294
|
nil
|
295
295
|
else
|
296
296
|
raise e
|
@@ -317,7 +317,7 @@ module Elasticsearch
|
|
317
317
|
self.client.indices.refresh index: target_index
|
318
318
|
rescue Exception => e
|
319
319
|
if e.class.to_s =~ /NotFound/ && options[:force]
|
320
|
-
client.transport.logger.debug("[!!!] Index does not exist (#{e.class})") if client.transport.logger
|
320
|
+
client.transport.transport.logger.debug("[!!!] Index does not exist (#{e.class})") if client.transport.transport.logger
|
321
321
|
nil
|
322
322
|
else
|
323
323
|
raise e
|
@@ -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
|
@@ -85,7 +85,7 @@ module Elasticsearch
|
|
85
85
|
# @return [Array] the list of document types used for retrieving documents
|
86
86
|
#
|
87
87
|
def document_type
|
88
|
-
models.map { |m| m.document_type }
|
88
|
+
models.map { |m| m.document_type }.compact.presence
|
89
89
|
end
|
90
90
|
|
91
91
|
# Get the client common for all models
|
@@ -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
|
@@ -115,15 +115,18 @@ module Elasticsearch
|
|
115
115
|
@target = target
|
116
116
|
end
|
117
117
|
|
118
|
-
|
118
|
+
def ruby2_keywords(*) # :nodoc:
|
119
|
+
end if RUBY_VERSION < "2.7"
|
120
|
+
|
121
|
+
# Delegate methods to `@target`. As per [the Ruby 3.0 explanation for keyword arguments](https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/), the only way to work on Ruby <2.7, and 2.7, and 3.0+ is to use `ruby2_keywords`.
|
119
122
|
#
|
120
|
-
def method_missing(method_name, *arguments, &block)
|
123
|
+
ruby2_keywords def method_missing(method_name, *arguments, &block)
|
121
124
|
target.respond_to?(method_name) ? target.__send__(method_name, *arguments, &block) : super
|
122
125
|
end
|
123
126
|
|
124
127
|
# Respond to methods from `@target`
|
125
128
|
#
|
126
|
-
def
|
129
|
+
def respond_to_missing?(method_name, include_private = false)
|
127
130
|
target.respond_to?(method_name) || super
|
128
131
|
end
|
129
132
|
|
@@ -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
|
@@ -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
|
@@ -42,6 +42,7 @@ module Elasticsearch
|
|
42
42
|
response.response['hits']['hits'].map { |hit| Result.new(hit) }
|
43
43
|
end
|
44
44
|
|
45
|
+
alias records results
|
45
46
|
end
|
46
47
|
end
|
47
48
|
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,6 +17,6 @@
|
|
17
17
|
|
18
18
|
module Elasticsearch
|
19
19
|
module Model
|
20
|
-
VERSION = "7.
|
20
|
+
VERSION = "7.2.1"
|
21
21
|
end
|
22
22
|
end
|
data/lib/elasticsearch/model.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
|
@@ -112,7 +112,7 @@ module Elasticsearch
|
|
112
112
|
# Delegate common methods to the `__elasticsearch__` ClassMethodsProxy, unless they are defined already
|
113
113
|
class << self
|
114
114
|
METHODS.each do |method|
|
115
|
-
delegate method, to: :__elasticsearch__ unless self.
|
115
|
+
delegate method, to: :__elasticsearch__ unless self.public_instance_methods.include?(method)
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
@@ -127,7 +127,7 @@ module Elasticsearch
|
|
127
127
|
# @example Get the client
|
128
128
|
#
|
129
129
|
# Elasticsearch::Model.client
|
130
|
-
# => #<Elasticsearch::
|
130
|
+
# => #<Elasticsearch::Client:0x007f96a7d0d000... >
|
131
131
|
#
|
132
132
|
def client
|
133
133
|
@client ||= Elasticsearch::Client.new
|
@@ -138,7 +138,7 @@ module Elasticsearch
|
|
138
138
|
# @example Configure (set) the client for all models
|
139
139
|
#
|
140
140
|
# Elasticsearch::Model.client = Elasticsearch::Client.new host: 'http://localhost:9200', tracer: true
|
141
|
-
# => #<Elasticsearch::
|
141
|
+
# => #<Elasticsearch::Client:0x007f96a6dd0d80... >
|
142
142
|
#
|
143
143
|
# @note You have to set the client before you call Elasticsearch methods on the model,
|
144
144
|
# or set it directly on the model; see {Elasticsearch::Model::Client::ClassMethods#client}
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -33,14 +33,14 @@ describe Elasticsearch::Model::Client do
|
|
33
33
|
context 'when a class includes the client module class methods' do
|
34
34
|
|
35
35
|
it 'defines the client module class methods on the model' do
|
36
|
-
expect(DummyClientModel.client).to be_a(Elasticsearch::
|
36
|
+
expect(DummyClientModel.client).to be_a(Elasticsearch::Client)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
40
|
context 'when a class includes the client module instance methods' do
|
41
41
|
|
42
42
|
it 'defines the client module class methods on the model' do
|
43
|
-
expect(DummyClientModel.new.client).to be_a(Elasticsearch::
|
43
|
+
expect(DummyClientModel.new.client).to be_a(Elasticsearch::Client)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -77,7 +77,7 @@ describe Elasticsearch::Model::Client do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'does not set the client on the class' do
|
80
|
-
expect(DummyClientModel.client).to be_a(Elasticsearch::
|
80
|
+
expect(DummyClientModel.client).to be_a(Elasticsearch::Client)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
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
|
@@ -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
|