elasticsearch-api 5.0.0 → 5.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/elasticsearch/api.rb +1 -0
- data/lib/elasticsearch/api/actions/cat/nodes.rb +2 -0
- data/lib/elasticsearch/api/actions/delete_by_query.rb +59 -29
- data/lib/elasticsearch/api/actions/index.rb +1 -1
- data/lib/elasticsearch/api/actions/indices/stats.rb +4 -1
- data/lib/elasticsearch/api/actions/indices/validate_query.rb +5 -1
- data/lib/elasticsearch/api/actions/nodes/stats.rb +2 -0
- data/lib/elasticsearch/api/actions/ping.rb +1 -1
- data/lib/elasticsearch/api/actions/scroll.rb +9 -3
- data/lib/elasticsearch/api/utils.rb +6 -6
- data/lib/elasticsearch/api/version.rb +1 -1
- data/test/integration/yaml_test_runner.rb +31 -22
- data/test/unit/delete_by_query_test.rb +4 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c481f1950627254aa828e2f5b0618bb85d2c636
|
4
|
+
data.tar.gz: 7f926b2449c1b1cf88bff4595f01ce573c73aa71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53aad6b5e65b3958c7c4b1aa9572c74a36492f8ac316628c3f147bf9c909cd9f55dc0b93b002c49ba4d439e0a94dfc6ba46eb82cce9f7977b120151f188fd1ac
|
7
|
+
data.tar.gz: dacb2b8fdb3c759edc520786aea48519bea340b7df091ded51b9237043391b8a83109949a83ae497a6a0539d4e9004edb74514b2725bf436b1571b719f274437
|
data/lib/elasticsearch/api.rb
CHANGED
@@ -25,6 +25,7 @@ module Elasticsearch
|
|
25
25
|
#
|
26
26
|
# client.cat.nodes format: 'json'
|
27
27
|
#
|
28
|
+
# @option arguments [Boolean] :full_id Return the full node ID instead of the shortened version (default: false)
|
28
29
|
# @option arguments [List] :h Comma-separated list of column names to display -- see the `help` argument
|
29
30
|
# @option arguments [Boolean] :v Display column headers as part of the output
|
30
31
|
# @option arguments [List] :s Comma-separated list of column names or column aliases to sort by
|
@@ -38,6 +39,7 @@ module Elasticsearch
|
|
38
39
|
#
|
39
40
|
def nodes(arguments={})
|
40
41
|
valid_params = [
|
42
|
+
:full_id,
|
41
43
|
:local,
|
42
44
|
:master_timeout,
|
43
45
|
:h,
|
@@ -15,55 +15,85 @@ module Elasticsearch
|
|
15
15
|
#
|
16
16
|
# client.delete_by_query index: 'myindex', body: { query: { term: { published: false } } }
|
17
17
|
#
|
18
|
-
# @option arguments [List] :index A comma-separated list of
|
19
|
-
#
|
20
|
-
# @option arguments [
|
21
|
-
# @option arguments [Hash] :body A query to restrict the operation
|
18
|
+
# @option arguments [List] :index A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices (*Required*)
|
19
|
+
# @option arguments [List] :type A comma-separated list of document types to search; leave empty to perform the operation on all types
|
20
|
+
# @option arguments [Hash] :body The search definition using the Query DSL (*Required*)
|
22
21
|
# @option arguments [String] :analyzer The analyzer to use for the query string
|
23
|
-
# @option arguments [
|
24
|
-
#
|
25
|
-
# @option arguments [String] :default_operator The default operator for query string query (AND or OR)
|
26
|
-
# (options: AND, OR)
|
22
|
+
# @option arguments [Boolean] :analyze_wildcard Specify whether wildcard and prefix queries should be analyzed (default: false)
|
23
|
+
# @option arguments [String] :default_operator The default operator for query string query (AND or OR) (options: AND, OR)
|
27
24
|
# @option arguments [String] :df The field to use as default where no field prefix is given in the query string
|
28
|
-
# @option arguments [
|
29
|
-
#
|
30
|
-
#
|
31
|
-
# @option arguments [String] :
|
32
|
-
#
|
33
|
-
# @option arguments [
|
34
|
-
#
|
35
|
-
# @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
|
36
|
-
# unavailable (missing, closed, etc)
|
37
|
-
# @option arguments [String] :replication Specific replication type (options: sync, async)
|
25
|
+
# @option arguments [Number] :from Starting offset (default: 0)
|
26
|
+
# @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when unavailable (missing or closed)
|
27
|
+
# @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)
|
28
|
+
# @option arguments [String] :conflicts What to do when the delete-by-query hits version conflicts? (options: abort, proceed)
|
29
|
+
# @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that are open, closed or both. (options: open, closed, none, all)
|
30
|
+
# @option arguments [Boolean] :lenient Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
|
31
|
+
# @option arguments [String] :preference Specify the node or shard the operation should be performed on (default: random)
|
38
32
|
# @option arguments [String] :q Query in the Lucene query string syntax
|
39
|
-
# @option arguments [
|
40
|
-
# @option arguments [
|
41
|
-
# @option arguments [
|
33
|
+
# @option arguments [List] :routing A comma-separated list of specific routing values
|
34
|
+
# @option arguments [Time] :scroll Specify how long a consistent view of the index should be maintained for scrolled search
|
35
|
+
# @option arguments [String] :search_type Search operation type (options: query_then_fetch, dfs_query_then_fetch)
|
36
|
+
# @option arguments [Time] :search_timeout Explicit timeout for each search request. Defaults to no timeout.
|
37
|
+
# @option arguments [Number] :size Number of hits to return (default: 10)
|
38
|
+
# @option arguments [List] :sort A comma-separated list of <field>:<direction> pairs
|
39
|
+
# @option arguments [List] :_source True or false to return the _source field or not, or a list of fields to return
|
40
|
+
# @option arguments [List] :_source_exclude A list of fields to exclude from the returned _source field
|
41
|
+
# @option arguments [List] :_source_include A list of fields to extract and return from the _source field
|
42
|
+
# @option arguments [Number] :terminate_after The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early.
|
43
|
+
# @option arguments [List] :stats Specific 'tag' of the request for logging and statistical purposes
|
44
|
+
# @option arguments [Boolean] :version Specify whether to return document version as part of a hit
|
45
|
+
# @option arguments [Boolean] :request_cache Specify if request cache should be used for this request or not, defaults to index level setting
|
46
|
+
# @option arguments [Boolean] :refresh Should the effected indexes be refreshed?
|
47
|
+
# @option arguments [Time] :timeout Time each individual bulk request should wait for shards that are unavailable.
|
48
|
+
# @option arguments [String] :wait_for_active_shards Sets the number of shard copies that must be active before proceeding with the delete by query operation. Defaults to 1, meaning the primary shard only. Set to `all` for all shard copies, otherwise set to any non-negative value less than or equal to the total number of copies for the shard (number of replicas + 1)
|
49
|
+
# @option arguments [Number] :scroll_size Size on the scroll request powering the update_by_query
|
50
|
+
# @option arguments [Boolean] :wait_for_completion Should the request should block until the delete-by-query is complete.
|
51
|
+
# @option arguments [Number] :requests_per_second The throttle for this request in sub-requests per second. -1 means no throttle.
|
52
|
+
# @option arguments [Integer] :slices The number of slices this task should be divided into. Defaults to 1 meaning the task isn't sliced into subtasks.
|
42
53
|
#
|
43
|
-
# @see
|
54
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-delete-by-query.html
|
44
55
|
#
|
45
56
|
def delete_by_query(arguments={})
|
46
57
|
raise ArgumentError, "Required argument 'index' missing" unless arguments[:index]
|
47
58
|
|
48
59
|
valid_params = [
|
49
60
|
:analyzer,
|
50
|
-
:
|
61
|
+
:analyze_wildcard,
|
51
62
|
:default_operator,
|
52
63
|
:df,
|
53
|
-
:
|
64
|
+
:from,
|
54
65
|
:ignore_unavailable,
|
55
66
|
:allow_no_indices,
|
67
|
+
:conflicts,
|
56
68
|
:expand_wildcards,
|
57
|
-
:
|
69
|
+
:lenient,
|
70
|
+
:preference,
|
58
71
|
:q,
|
59
72
|
:routing,
|
60
|
-
:
|
61
|
-
:
|
73
|
+
:scroll,
|
74
|
+
:search_type,
|
75
|
+
:search_timeout,
|
76
|
+
:size,
|
77
|
+
:sort,
|
78
|
+
:_source,
|
79
|
+
:_source_exclude,
|
80
|
+
:_source_include,
|
81
|
+
:terminate_after,
|
82
|
+
:stats,
|
83
|
+
:version,
|
84
|
+
:request_cache,
|
85
|
+
:refresh,
|
86
|
+
:timeout,
|
87
|
+
:wait_for_active_shards,
|
88
|
+
:scroll_size,
|
89
|
+
:wait_for_completion,
|
90
|
+
:requests_per_second,
|
91
|
+
:slices ]
|
62
92
|
|
63
|
-
method =
|
93
|
+
method = HTTP_POST
|
64
94
|
path = Utils.__pathify Utils.__listify(arguments[:index]),
|
65
95
|
Utils.__listify(arguments[:type]),
|
66
|
-
'/
|
96
|
+
'/_delete_by_query'
|
67
97
|
|
68
98
|
params = Utils.__validate_and_extract_params arguments, valid_params
|
69
99
|
body = arguments[:body]
|
@@ -7,7 +7,7 @@ module Elasticsearch
|
|
7
7
|
# The `index` API will either _create_ a new document, or _update_ an existing one, when a document `:id`
|
8
8
|
# is passed. When creating a document, an ID will be auto-generated, when it's not passed as an argument.
|
9
9
|
#
|
10
|
-
# You can specifically enforce the _create_ operation by
|
10
|
+
# You can specifically enforce the _create_ operation by setting the `op_type` argument to `create`, or
|
11
11
|
# by using the {Actions#create} method.
|
12
12
|
#
|
13
13
|
# Optimistic concurrency control is performed, when the `version` argument is specified. By default,
|
@@ -71,6 +71,8 @@ module Elasticsearch
|
|
71
71
|
# @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
|
72
72
|
# are open, closed or both. (options: open, closed)
|
73
73
|
#
|
74
|
+
# @option arguments [Boolean] :include_segment_file_sizes Whether to report the aggregated disk usage of each one of the Lucene index files. Only applies if segment stats are requested. (default: false)
|
75
|
+
#
|
74
76
|
# @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-stats.html
|
75
77
|
#
|
76
78
|
def stats(arguments={})
|
@@ -99,7 +101,8 @@ module Elasticsearch
|
|
99
101
|
:ignore_indices,
|
100
102
|
:ignore_unavailable,
|
101
103
|
:allow_no_indices,
|
102
|
-
:expand_wildcards
|
104
|
+
:expand_wildcards,
|
105
|
+
:include_segment_file_sizes ]
|
103
106
|
|
104
107
|
method = HTTP_GET
|
105
108
|
|
@@ -13,9 +13,12 @@ module Elasticsearch
|
|
13
13
|
#
|
14
14
|
# client.indices.validate_query index: 'myindex', q: '[[[ BOOM! ]]]', explain: true
|
15
15
|
#
|
16
|
-
# @example Validate a DSL query (with explanation)
|
16
|
+
# @example Validate a DSL query (with explanation and rewrite). With rewrite set to true, the
|
17
|
+
# explanation is more detailed showing the actual Lucene query that will
|
18
|
+
# be executed.
|
17
19
|
#
|
18
20
|
# client.indices.validate_query index: 'myindex',
|
21
|
+
# rewrite: true,
|
19
22
|
# explain: true,
|
20
23
|
# body: {
|
21
24
|
# filtered: {
|
@@ -64,6 +67,7 @@ module Elasticsearch
|
|
64
67
|
#
|
65
68
|
def validate_query(arguments={})
|
66
69
|
valid_params = [
|
70
|
+
:rewrite,
|
67
71
|
:explain,
|
68
72
|
:ignore_unavailable,
|
69
73
|
:allow_no_indices,
|
@@ -32,6 +32,7 @@ module Elasticsearch
|
|
32
32
|
# (supports wildcards)
|
33
33
|
# @option arguments [List] :fields A comma-separated list of fields for `fielddata` and `completion` index
|
34
34
|
# metrics (supports wildcards)
|
35
|
+
# @option arguments [Boolean] :include_segment_file_sizes Whether to report the aggregated disk usage of each one of the Lucene index files. Only applies if segment stats are requested. (default: false)
|
35
36
|
# @option arguments [Boolean] :groups A comma-separated list of search groups for `search` index metric
|
36
37
|
# @option arguments [Boolean] :human Whether to return time and byte values in human-readable format
|
37
38
|
# @option arguments [String] :level Specify the level for aggregating indices stats
|
@@ -51,6 +52,7 @@ module Elasticsearch
|
|
51
52
|
:completion_fields,
|
52
53
|
:fielddata_fields,
|
53
54
|
:fields,
|
55
|
+
:include_segment_file_sizes,
|
54
56
|
:groups,
|
55
57
|
:human,
|
56
58
|
:level,
|
@@ -7,7 +7,8 @@ module Elasticsearch
|
|
7
7
|
# When using `from` and `size` to return a large result sets, performance drops as you "paginate" in the set,
|
8
8
|
# and you can't guarantee the consistency when the index is being updated at the same time.
|
9
9
|
#
|
10
|
-
# "
|
10
|
+
# The "Scroll" API uses a "point in time" snapshot of the index state, which was created via a "Search" API
|
11
|
+
# request specifying the `scroll` parameter.
|
11
12
|
#
|
12
13
|
# @example A basic example
|
13
14
|
#
|
@@ -24,8 +25,13 @@ module Elasticsearch
|
|
24
25
|
# 1_000.times do |i| client.index index: 'test', type: 'test', id: i+1, body: {title: "Test #{i}"} end
|
25
26
|
# client.indices.refresh index: 'test'
|
26
27
|
#
|
27
|
-
# # Open the "view" of the index
|
28
|
-
#
|
28
|
+
# # Open the "view" of the index by passing the `scroll` parameter
|
29
|
+
# # Sorting by `_doc` makes the operations faster
|
30
|
+
# r = client.search index: 'test', scroll: '1m', body: {sort: ['_doc']}
|
31
|
+
#
|
32
|
+
# # Display the initial results
|
33
|
+
# puts "--- BATCH 0 -------------------------------------------------"
|
34
|
+
# puts r['hits']['hits'].map { |d| d['_source']['title'] }.inspect
|
29
35
|
#
|
30
36
|
# # Call the `scroll` API until empty results are returned
|
31
37
|
# while r = client.scroll(scroll_id: r['_scroll_id'], scroll: '5m') and not r['hits']['hits'].empty? do
|
@@ -235,7 +235,7 @@ module Elasticsearch
|
|
235
235
|
end
|
236
236
|
|
237
237
|
unless messages.empty?
|
238
|
-
if
|
238
|
+
if STDERR.tty?
|
239
239
|
STDERR.puts messages.map { |m| "\e[31;1m#{m}\e[0m" }.join("\n")
|
240
240
|
else
|
241
241
|
STDERR.puts messages.join("\n")
|
@@ -251,11 +251,11 @@ module Elasticsearch
|
|
251
251
|
|
252
252
|
message += ". This method is not supported in the version you're using: #{Elasticsearch::API::VERSION}, and will be removed in the next release."
|
253
253
|
|
254
|
-
if
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
254
|
+
if STDERR.tty?
|
255
|
+
STDERR.puts "\e[31;1m#{message}\e[0m"
|
256
|
+
else
|
257
|
+
STDERR.puts message
|
258
|
+
end
|
259
259
|
end
|
260
260
|
|
261
261
|
extend self
|
@@ -231,39 +231,44 @@ module Elasticsearch
|
|
231
231
|
skip = actions.select { |a| a['skip'] }.first
|
232
232
|
$stderr.puts "SKIP: #{skip.inspect}" if ENV['DEBUG']
|
233
233
|
|
234
|
-
|
235
|
-
|
234
|
+
def skip_version(skip)
|
235
|
+
if skip && skip['skip']['version']
|
236
236
|
|
237
|
-
|
237
|
+
return skip['skip']['reason'] ? skip['skip']['reason'] : true if skip['skip']['version'] == 'all'
|
238
238
|
|
239
|
-
|
239
|
+
min, max = skip['skip']['version'].split('-').map(&:strip)
|
240
240
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
241
|
+
min_normalized = sprintf "%03d-%03d-%03d",
|
242
|
+
*min.split('.')
|
243
|
+
.map(&:to_i)
|
244
|
+
.fill(0, min.split('.').length, 3-min.split('.').length)
|
245
245
|
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
246
|
+
max_normalized = sprintf "%03d-%03d-%03d",
|
247
|
+
*max.split('.')
|
248
|
+
.map(&:to_i)
|
249
|
+
.map(&:to_i)
|
250
|
+
.fill(0, max.split('.').length, 3-max.split('.').length)
|
251
251
|
|
252
|
-
|
252
|
+
es_normalized = sprintf "%03d-%03d-%03d", *$es_version.split('.').map(&:to_i)
|
253
253
|
|
254
|
-
|
255
|
-
|
254
|
+
if ( min.empty? || min_normalized <= es_normalized ) && ( max.empty? || max_normalized >= es_normalized )
|
255
|
+
return skip['skip']['reason'] ? skip['skip']['reason'] : true
|
256
|
+
end
|
257
|
+
|
258
|
+
return false
|
256
259
|
end
|
260
|
+
end
|
257
261
|
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
262
|
+
def skip_features(skip)
|
263
|
+
if skip && skip['skip']['features']
|
264
|
+
skip_features = skip['skip']['features'].respond_to?(:split) ? skip['skip']['features'].split(',') : skip['skip']['features']
|
265
|
+
if ( skip_features & SKIP_FEATURES.split(',') ).size > 0
|
266
|
+
return skip['skip']['features']
|
267
|
+
end
|
263
268
|
end
|
264
269
|
end
|
265
270
|
|
266
|
-
return
|
271
|
+
return skip_version(skip) || skip_features(skip)
|
267
272
|
end
|
268
273
|
|
269
274
|
extend self
|
@@ -401,6 +406,10 @@ suites.each do |suite|
|
|
401
406
|
actions.each do |action|
|
402
407
|
$stderr.puts "ACTION: #{action.inspect}" if ENV['DEBUG']
|
403
408
|
|
409
|
+
# This check verifies that the YAML has correct indentation.
|
410
|
+
# See https://github.com/elastic/elasticsearch/issues/21980
|
411
|
+
raise "INVALID YAML: #{action.inspect}" if action.keys.size != 1
|
412
|
+
|
404
413
|
case
|
405
414
|
|
406
415
|
# --- Perform action ------------------------------------------
|
@@ -15,8 +15,8 @@ module Elasticsearch
|
|
15
15
|
|
16
16
|
should "perform correct request" do
|
17
17
|
subject.expects(:perform_request).with do |method, url, params, body|
|
18
|
-
assert_equal '
|
19
|
-
assert_equal 'foo/
|
18
|
+
assert_equal 'POST', method
|
19
|
+
assert_equal 'foo/_delete_by_query', url
|
20
20
|
assert_equal Hash.new, params
|
21
21
|
assert_equal Hash.new, body[:term]
|
22
22
|
true
|
@@ -27,7 +27,7 @@ module Elasticsearch
|
|
27
27
|
|
28
28
|
should "optionally take the :type argument" do
|
29
29
|
subject.expects(:perform_request).with do |method, url, params, body|
|
30
|
-
assert_equal 'foo/tweet,post/
|
30
|
+
assert_equal 'foo/tweet,post/_delete_by_query', url
|
31
31
|
true
|
32
32
|
end.returns(FakeResponse.new)
|
33
33
|
|
@@ -36,7 +36,7 @@ module Elasticsearch
|
|
36
36
|
|
37
37
|
should "pass the query in URL parameters" do
|
38
38
|
subject.expects(:perform_request).with do |method, url, params, body|
|
39
|
-
assert_equal 'foo/
|
39
|
+
assert_equal 'foo/_delete_by_query', url
|
40
40
|
assert_equal 'foo:bar', params[:q]
|
41
41
|
true
|
42
42
|
end.returns(FakeResponse.new)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.1
|
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: 2017-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|