solrb 0.2.1 → 0.2.2
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.lock +3 -3
- data/README.md +2 -2
- data/lib/solr/indexing/request.rb +4 -2
- data/lib/solr/request/leader_node_selection_strategy.rb +28 -0
- data/lib/solr/request/runner.rb +1 -4
- data/lib/solr/support/url_helper.rb +1 -1
- data/lib/solr/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5f653429c9d04cf698507f5a295d6163704bebce83e28af6d37e72c68579218
|
4
|
+
data.tar.gz: '0118530a85c2a43f534227e7494482109b38b6bc197a14cccf03e1672dba2fe1'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0ceb6776fad084292047ac498f7112834369526e67a55aa6404fa8c44a9eaba181325a940c84189f09434f020a463509bf0a9d9085ef17784b5df562f3e5fa2
|
7
|
+
data.tar.gz: e1340426003c2ab5813f252ea71e358cd87c88ad8c3364894e9a9650ea0b469f34299429c439564db7593b7fb129d605b252c6ef8370b859bbd5f6e6e41cc772
|
data/Gemfile.lock
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
solrb (0.1
|
4
|
+
solrb (0.2.1)
|
5
5
|
addressable
|
6
6
|
faraday
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
addressable (2.
|
11
|
+
addressable (2.6.0)
|
12
12
|
public_suffix (>= 2.0.2, < 4.0)
|
13
13
|
ast (2.4.0)
|
14
14
|
byebug (10.0.2)
|
15
15
|
coderay (1.1.2)
|
16
16
|
diff-lcs (1.3)
|
17
17
|
docile (1.3.1)
|
18
|
-
faraday (0.15.
|
18
|
+
faraday (0.15.4)
|
19
19
|
multipart-post (>= 1.2, < 3)
|
20
20
|
jaro_winkler (1.5.1)
|
21
21
|
json (2.1.0)
|
data/README.md
CHANGED
@@ -421,8 +421,8 @@ If you want to run it locally, you can either use [CircleCI CLI](https://circle
|
|
421
421
|
or do a completely manual setup (for up-to-date steps see circleci config)
|
422
422
|
|
423
423
|
```sh
|
424
|
-
docker pull solr:7.
|
425
|
-
docker run -it --name test-solr -p 8983:8983/tcp -t solr:7.
|
424
|
+
docker pull solr:7.7.1
|
425
|
+
docker run -it --name test-solr -p 8983:8983/tcp -t solr:7.7.1
|
426
426
|
# create a core
|
427
427
|
curl 'http://localhost:8983/solr/admin/cores?action=CREATE&name=test-core&configSet=_default'
|
428
428
|
# disable field guessing
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'solr/request/http_request'
|
2
|
+
require 'solr/request/leader_node_selection_strategy'
|
2
3
|
|
3
4
|
module Solr
|
4
5
|
module Indexing
|
@@ -11,9 +12,10 @@ module Solr
|
|
11
12
|
@documents = documents
|
12
13
|
end
|
13
14
|
|
14
|
-
def run(commit: false)
|
15
|
+
def run(commit: false, options: {})
|
15
16
|
http_request = build_http_request(commit)
|
16
|
-
Solr::Request::
|
17
|
+
runner_options = { node_selection_strategy: Solr::Request::LeaderNodeSelectionStrategy }
|
18
|
+
Solr::Request::Runner.call(request: http_request, **runner_options.merge(options))
|
17
19
|
end
|
18
20
|
|
19
21
|
private
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Solr
|
2
|
+
module Request
|
3
|
+
class LeaderNodeSelectionStrategy
|
4
|
+
def self.call(collection_name)
|
5
|
+
new(collection_name).call
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(collection_name)
|
9
|
+
@collection_name = collection_name
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
return [solr_url] unless Solr.cloud_enabled?
|
14
|
+
|
15
|
+
[leader_replica_node_for(collection: @collection_name)]
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def leader_replica_node_for(collection:)
|
21
|
+
shards = Solr.shards_for(collection: collection)
|
22
|
+
return unless shards
|
23
|
+
first_shard_name = shards.sort.first
|
24
|
+
Solr.leader_replica_node_for(collection: collection, shard: first_shard_name)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/solr/request/runner.rb
CHANGED
@@ -56,10 +56,7 @@ module Solr
|
|
56
56
|
|
57
57
|
def solr_cloud_collection_urls
|
58
58
|
urls = node_selection_strategy.call(collection_name)
|
59
|
-
|
60
|
-
urls.map do |url|
|
61
|
-
File.join(url, collection_name.to_s)
|
62
|
-
end
|
59
|
+
urls&.map { |u| File.join(u, collection_name.to_s) }
|
63
60
|
end
|
64
61
|
|
65
62
|
def collection_name
|
@@ -10,7 +10,7 @@ module Solr
|
|
10
10
|
full_uri
|
11
11
|
end
|
12
12
|
|
13
|
-
def build_request_url(url:,path:, url_params: {})
|
13
|
+
def build_request_url(url:, path:, url_params: {})
|
14
14
|
action_url = File.join(url, path).chomp('/')
|
15
15
|
full_uri = Addressable::URI.parse(action_url)
|
16
16
|
full_uri.query_values = url_params if url_params && url_params.any?
|
data/lib/solr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adriano Luz
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-03
|
13
|
+
date: 2019-04-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|
@@ -238,6 +238,7 @@ files:
|
|
238
238
|
- lib/solr/request/default_node_selection_strategy.rb
|
239
239
|
- lib/solr/request/first_shard_leader_node_selection_strategy.rb
|
240
240
|
- lib/solr/request/http_request.rb
|
241
|
+
- lib/solr/request/leader_node_selection_strategy.rb
|
241
242
|
- lib/solr/request/runner.rb
|
242
243
|
- lib/solr/response.rb
|
243
244
|
- lib/solr/response/header.rb
|
@@ -273,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
273
274
|
version: '0'
|
274
275
|
requirements: []
|
275
276
|
rubyforge_project:
|
276
|
-
rubygems_version: 2.7.
|
277
|
+
rubygems_version: 2.7.6
|
277
278
|
signing_key:
|
278
279
|
specification_version: 4
|
279
280
|
summary: Solr Ruby client with a nice object-oriented API
|