elastomer-client 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/elastomer/client/app_delete_by_query.rb +17 -31
- data/lib/elastomer/client/scroller.rb +23 -8
- data/lib/elastomer/version.rb +1 -1
- data/lib/elastomer/version_support.rb +11 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 149f340281bffddc3fac2a8a783890725da2ee30
|
4
|
+
data.tar.gz: e25c7f445e3002c6c751fca4119e7abc6311885b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b738a0e0c1ee712fcdd2143996415b419203fc55c692e38d0ccc8c44caa0795f843e8da880a6ea4b4d346f65bdfbfcd6cd45c57db7d7fa00387c467cb0d3c36f
|
7
|
+
data.tar.gz: 3622c6b76c88e224f38587acd480f3bb2875abfe15e2a29ba7c00c1ea12c1166c1ef8522d93425e1a44b078f9a0d8515446a4682a4923787cb165a03c2f75228
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 3.0.1 (2017-12-20)
|
2
|
+
- Fixed argument passing to `app_delete_by_query`
|
3
|
+
- Explicitly close scroll search contexts when scroll is complete
|
4
|
+
|
1
5
|
## 3.0.0 (2017-12-15)
|
2
6
|
- Fixed swapped args in {Client,Index}#multi\_percolate count calls using block API
|
3
7
|
- Support for Elasticsearch 5.x
|
@@ -53,30 +53,6 @@ module Elastomer
|
|
53
53
|
|
54
54
|
class AppDeleteByQuery
|
55
55
|
|
56
|
-
SEARCH_PARAMETERS = %i[
|
57
|
-
index
|
58
|
-
type
|
59
|
-
q
|
60
|
-
df
|
61
|
-
analyzer
|
62
|
-
analyze_wildcard
|
63
|
-
batched_reduce_size
|
64
|
-
default_operator
|
65
|
-
lenient
|
66
|
-
explain
|
67
|
-
_source
|
68
|
-
stored_fields
|
69
|
-
sort
|
70
|
-
track_scores
|
71
|
-
timeout
|
72
|
-
terminate_after
|
73
|
-
from
|
74
|
-
size
|
75
|
-
search_type
|
76
|
-
scroll
|
77
|
-
].to_set.freeze
|
78
|
-
|
79
|
-
|
80
56
|
# Create a new DeleteByQuery command for deleting documents matching a
|
81
57
|
# query
|
82
58
|
#
|
@@ -132,7 +108,8 @@ module Elastomer
|
|
132
108
|
# Returns a Hash of statistics about the bulk operation
|
133
109
|
def execute
|
134
110
|
ops = Enumerator.new do |yielder|
|
135
|
-
@client.scan(@query, search_params)
|
111
|
+
scan = @client.scan(@query, search_params)
|
112
|
+
scan.each_document do |hit|
|
136
113
|
yielder.yield([:delete, hit.select { |key, _| ["_index", "_type", "_id", "_routing"].include?(key) }])
|
137
114
|
end
|
138
115
|
end
|
@@ -144,15 +121,24 @@ module Elastomer
|
|
144
121
|
|
145
122
|
# Internal: Remove parameters that are not valid for the _search endpoint
|
146
123
|
def search_params
|
147
|
-
|
148
|
-
|
124
|
+
return @search_params if defined?(@search_params)
|
125
|
+
|
126
|
+
@search_params = @params.merge(_source: false)
|
127
|
+
@search_params.delete(:action_count)
|
128
|
+
@search_params
|
149
129
|
end
|
150
130
|
|
151
131
|
# Internal: Remove parameters that are not valid for the _bulk endpoint
|
152
132
|
def bulk_params
|
153
|
-
@
|
133
|
+
return @bulk_params if defined?(@bulk_params)
|
134
|
+
|
135
|
+
@bulk_params = @params.dup
|
136
|
+
return @bulk_params if @bulk_params.nil?
|
137
|
+
|
138
|
+
@bulk_params.delete(:q)
|
139
|
+
@bulk_params
|
154
140
|
end
|
155
141
|
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -135,11 +135,11 @@ module Elastomer
|
|
135
135
|
query.merge(:sort => [:_doc])
|
136
136
|
end
|
137
137
|
|
138
|
-
|
139
|
-
:
|
140
|
-
:
|
141
|
-
:
|
142
|
-
:
|
138
|
+
DEFAULT_OPTS = {
|
139
|
+
index: nil,
|
140
|
+
type: nil,
|
141
|
+
scroll: "5m",
|
142
|
+
size: 50,
|
143
143
|
}.freeze
|
144
144
|
|
145
145
|
class Scroller
|
@@ -151,7 +151,7 @@ module Elastomer
|
|
151
151
|
# and https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-type.html#scan
|
152
152
|
#
|
153
153
|
# client - Elastomer::Client used for HTTP requests to the server
|
154
|
-
# query - The query to
|
154
|
+
# query - The query to scroll as a Hash or a JSON encoded String
|
155
155
|
# opts - Options Hash
|
156
156
|
# :index - the name of the index to search
|
157
157
|
# :type - the document type to search
|
@@ -194,7 +194,7 @@ module Elastomer
|
|
194
194
|
# hits['hits'].each { |document| ... }
|
195
195
|
# end
|
196
196
|
#
|
197
|
-
# Returns this
|
197
|
+
# Returns this Scroller instance.
|
198
198
|
def each
|
199
199
|
loop do
|
200
200
|
body = do_scroll
|
@@ -209,6 +209,8 @@ module Elastomer
|
|
209
209
|
end
|
210
210
|
|
211
211
|
self
|
212
|
+
ensure
|
213
|
+
clear!
|
212
214
|
end
|
213
215
|
|
214
216
|
# Iterate over each document from the scan query. This method is just a
|
@@ -227,11 +229,24 @@ module Elastomer
|
|
227
229
|
# document['_source']
|
228
230
|
# end
|
229
231
|
#
|
230
|
-
# Returns this
|
232
|
+
# Returns this Scroller instance.
|
231
233
|
def each_document( &block )
|
232
234
|
each { |hits| hits["hits"].each(&block) }
|
233
235
|
end
|
234
236
|
|
237
|
+
# Terminate the scroll query. This will remove the search context from the
|
238
|
+
# cluster and no further documents can be returned by this Scroller
|
239
|
+
# instance.
|
240
|
+
#
|
241
|
+
# Returns nil if the `scroll_id` is not valid; returns the reponse body if
|
242
|
+
# the `scroll_id` was cleared.
|
243
|
+
def clear!
|
244
|
+
return if scroll_id.nil?
|
245
|
+
client.clear_scroll(scroll_id)
|
246
|
+
rescue ::Elastomer::Client::IllegalArgument
|
247
|
+
nil
|
248
|
+
end
|
249
|
+
|
235
250
|
# Internal: Perform the actual scroll requests. This method wil call out
|
236
251
|
# to the `Client#start_scroll` and `Client#continue_scroll` methods while
|
237
252
|
# keeping track of the `scroll_id` internally.
|
data/lib/elastomer/version.rb
CHANGED
@@ -70,6 +70,17 @@ module Elastomer
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
# COMPATIBILITY: return a simple boolean value or legacy {"enabled": true/false}.
|
74
|
+
#
|
75
|
+
# https://www.elastic.co/guide/en/elasticsearch/reference/5.5/breaking_50_mapping_changes.html#_literal_norms_literal
|
76
|
+
def strict_boolean(b)
|
77
|
+
if es_version_2_x?
|
78
|
+
{enabled: b}
|
79
|
+
else
|
80
|
+
b
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
73
84
|
# Elasticsearch 2.0 changed some request formats in a non-backward-compatible
|
74
85
|
# way. Some tests need to know what version is running to structure requests
|
75
86
|
# as expected.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastomer-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Pease
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-12-
|
12
|
+
date: 2017-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -317,7 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
317
|
version: '0'
|
318
318
|
requirements: []
|
319
319
|
rubyforge_project:
|
320
|
-
rubygems_version: 2.6.
|
320
|
+
rubygems_version: 2.6.11
|
321
321
|
signing_key:
|
322
322
|
specification_version: 4
|
323
323
|
summary: A library for interacting with Elasticsearch
|