solrb 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|