elasticsearch-api 6.3.0 → 6.3.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/elasticsearch/api/actions/delete_template.rb +21 -0
  3. data/lib/elasticsearch/api/actions/field_stats.rb +36 -0
  4. data/lib/elasticsearch/api/actions/get_template.rb +27 -0
  5. data/lib/elasticsearch/api/actions/indices/delete_mapping.rb +26 -0
  6. data/lib/elasticsearch/api/actions/indices/delete_warmer.rb +32 -0
  7. data/lib/elasticsearch/api/actions/indices/get_aliases.rb +37 -0
  8. data/lib/elasticsearch/api/actions/indices/get_warmer.rb +62 -0
  9. data/lib/elasticsearch/api/actions/indices/optimize.rb +77 -0
  10. data/lib/elasticsearch/api/actions/indices/put_warmer.rb +65 -0
  11. data/lib/elasticsearch/api/actions/indices/seal.rb +24 -0
  12. data/lib/elasticsearch/api/actions/indices/snapshot_index.rb +44 -0
  13. data/lib/elasticsearch/api/actions/indices/status.rb +63 -0
  14. data/lib/elasticsearch/api/actions/list_benchmarks.rb +27 -0
  15. data/lib/elasticsearch/api/actions/mlt.rb +130 -0
  16. data/lib/elasticsearch/api/actions/mpercolate.rb +62 -0
  17. data/lib/elasticsearch/api/actions/nodes/shutdown.rb +39 -0
  18. data/lib/elasticsearch/api/actions/percolate.rb +73 -0
  19. data/lib/elasticsearch/api/actions/put_template.rb +25 -0
  20. data/lib/elasticsearch/api/actions/remote/info.rb +21 -0
  21. data/lib/elasticsearch/api/actions/search_exists.rb +63 -0
  22. data/lib/elasticsearch/api/actions/suggest.rb +49 -0
  23. data/lib/elasticsearch/api/version.rb +1 -1
  24. data/spec/elasticsearch/api/actions/delete_template_spec.rb +17 -0
  25. data/spec/elasticsearch/api/actions/field_stats_spec.rb +17 -0
  26. data/spec/elasticsearch/api/actions/get_template_spec.rb +52 -0
  27. data/spec/elasticsearch/api/actions/indices/delete_mapping_spec.rb +77 -0
  28. data/spec/elasticsearch/api/actions/indices/delete_warmer_spec.rb +86 -0
  29. data/spec/elasticsearch/api/actions/indices/get_aliases_spec.rb +55 -0
  30. data/spec/elasticsearch/api/actions/indices/get_warmer_spec.rb +48 -0
  31. data/spec/elasticsearch/api/actions/indices/optimize_spec.rb +63 -0
  32. data/spec/elasticsearch/api/actions/indices/put_warmer_spec.rb +101 -0
  33. data/spec/elasticsearch/api/actions/indices/seal_spec.rb +18 -0
  34. data/spec/elasticsearch/api/actions/indices/snapshot_index_spec.rb +89 -0
  35. data/spec/elasticsearch/api/actions/indices/status_spec.rb +92 -0
  36. data/spec/elasticsearch/api/actions/list_benchmarks_spec.rb +17 -0
  37. data/spec/elasticsearch/api/actions/mlt_spec.rb +130 -0
  38. data/spec/elasticsearch/api/actions/mpercolate_spec.rb +49 -0
  39. data/spec/elasticsearch/api/actions/nodes/shutdown_spec.rb +59 -0
  40. data/spec/elasticsearch/api/actions/percolate_spec.rb +67 -0
  41. data/spec/elasticsearch/api/actions/put_template_spec.rb +17 -0
  42. data/spec/elasticsearch/api/actions/remote/info_spec.rb +18 -0
  43. data/spec/elasticsearch/api/actions/search_exists_spec.rb +63 -0
  44. data/spec/elasticsearch/api/actions/suggest_spec.rb +77 -0
  45. metadata +65 -2
@@ -0,0 +1,63 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Indices
4
+ module Actions
5
+
6
+ # Return information about one or more indices
7
+ #
8
+ # @example Get information about all indices
9
+ #
10
+ # client.indices.status
11
+ #
12
+ # @example Get information about a specific index
13
+ #
14
+ # client.indices.status index: 'foo'
15
+ #
16
+ # @example Get information about shard recovery for a specific index
17
+ #
18
+ # client.indices.status index: 'foo', recovery: true
19
+ #
20
+ # @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string
21
+ # to perform the operation on all indices
22
+ # @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
23
+ # no concrete indices. (This includes `_all` string or when no
24
+ # indices have been specified)
25
+ # @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
26
+ # are open, closed or both. (options: open, closed)
27
+ # @option arguments [String] :ignore_indices When performed on multiple indices, allows to ignore
28
+ # `missing` ones (options: none, missing) @until 1.0
29
+ # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
30
+ # unavailable (missing, closed, etc)
31
+ # @option arguments [Boolean] :recovery Return information about shard recovery (progress, size, etc)
32
+ # @option arguments [Boolean] :snapshot Return information about snapshots (when shared gateway is used)
33
+ #
34
+ # @see http://elasticsearch.org/guide/reference/api/admin-indices-status/
35
+ #
36
+ def status(arguments={})
37
+ method = HTTP_GET
38
+ path = Utils.__pathify Utils.__listify(arguments[:index]), '_status'
39
+
40
+ params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
41
+ body = nil
42
+
43
+ if Array(arguments[:ignore]).include?(404)
44
+ Utils.__rescue_from_not_found { perform_request(method, path, params, body).body }
45
+ else
46
+ perform_request(method, path, params, body).body
47
+ end
48
+ end
49
+
50
+ # Register this action with its valid params when the module is loaded.
51
+ #
52
+ # @since 6.2.0
53
+ ParamsRegistry.register(:status, [
54
+ :ignore_indices,
55
+ :ignore_unavailable,
56
+ :allow_no_indices,
57
+ :expand_wildcards,
58
+ :recovery,
59
+ :snapshot ].freeze)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,27 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Return a list of running benchmarks
6
+ #
7
+ # @example
8
+ #
9
+ # client.list_benchmarks
10
+ #
11
+ # @option arguments [List] :index A comma-separated list of index names; use `_all` or empty string
12
+ # to perform the operation on all indices
13
+ # @option arguments [String] :type The name of the document type
14
+ #
15
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-benchmark.html
16
+ #
17
+ def list_benchmarks(arguments={})
18
+ method = HTTP_GET
19
+ path = "_bench"
20
+ params = {}
21
+ body = nil
22
+
23
+ perform_request(method, path, params, body).body
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,130 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Return documents similar to the specified one.
6
+ #
7
+ # Performs a `more_like_this` query with the specified document as the input.
8
+ #
9
+ # @example Search for similar documents using the `title` property of document `myindex/mytype/1`
10
+ #
11
+ # # First, let's setup a synonym-aware analyzer ("quick" <=> "fast")
12
+ # client.indices.create index: 'myindex', body: {
13
+ # settings: {
14
+ # analysis: {
15
+ # filter: {
16
+ # synonyms: {
17
+ # type: 'synonym',
18
+ # synonyms: [ "quick,fast" ]
19
+ # }
20
+ # },
21
+ # analyzer: {
22
+ # title_synonym: {
23
+ # type: 'custom',
24
+ # tokenizer: 'whitespace',
25
+ # filter: ['lowercase', 'stop', 'snowball', 'synonyms']
26
+ # }
27
+ # }
28
+ # }
29
+ # },
30
+ # mappings: {
31
+ # mytype: {
32
+ # properties: {
33
+ # title: {
34
+ # type: 'string',
35
+ # analyzer: 'title_synonym'
36
+ # }
37
+ # }
38
+ # }
39
+ # }
40
+ # }
41
+ #
42
+ # # Index three documents
43
+ # client.index index: 'myindex', type: 'mytype', id: 1, body: { title: 'Quick Brown Fox' }
44
+ # client.index index: 'myindex', type: 'mytype', id: 2, body: { title: 'Slow Black Dog' }
45
+ # client.index index: 'myindex', type: 'mytype', id: 3, body: { title: 'Fast White Rabbit' }
46
+ # client.indices.refresh index: 'myindex'
47
+ #
48
+ # client.mlt index: 'myindex', type: 'mytype', id: 1, mlt_fields: 'title', min_doc_freq: 1, min_term_freq: 1
49
+ # # => { ... {"title"=>"Fast White Rabbit"}}]}}
50
+ #
51
+ # @option arguments [String] :id The document ID (*Required*)
52
+ # @option arguments [String] :index The name of the index (*Required*)
53
+ # @option arguments [String] :type The type of the document (use `_all` to fetch
54
+ # the first document matching the ID across all types) (*Required*)
55
+ # @option arguments [Hash] :body A specific search request definition
56
+ # @option arguments [Number] :boost_terms The boost factor
57
+ # @option arguments [Number] :max_doc_freq The word occurrence frequency as count: words with higher occurrence
58
+ # in the corpus will be ignored
59
+ # @option arguments [Number] :max_query_terms The maximum query terms to be included in the generated query
60
+ # @option arguments [Number] :max_word_len The minimum length of the word: longer words will be ignored
61
+ # @option arguments [Number] :min_doc_freq The word occurrence frequency as count: words with lower occurrence
62
+ # in the corpus will be ignored
63
+ # @option arguments [Number] :min_term_freq The term frequency as percent: terms with lower occurence
64
+ # in the source document will be ignored
65
+ # @option arguments [Number] :min_word_len The minimum length of the word: shorter words will be ignored
66
+ # @option arguments [List] :mlt_fields Specific fields to perform the query against
67
+ # @option arguments [Number] :percent_terms_to_match How many terms have to match in order to consider
68
+ # the document a match (default: 0.3)
69
+ # @option arguments [String] :routing Specific routing value
70
+ # @option arguments [Number] :search_from The offset from which to return results
71
+ # @option arguments [List] :search_indices A comma-separated list of indices to perform the query against
72
+ # (default: the index containing the document)
73
+ # @option arguments [String] :search_query_hint The search query hint
74
+ # @option arguments [String] :search_scroll A scroll search request definition
75
+ # @option arguments [Number] :search_size The number of documents to return (default: 10)
76
+ # @option arguments [String] :search_source A specific search request definition (instead of using the request body)
77
+ # @option arguments [String] :search_type Specific search type (eg. `dfs_then_fetch`, `count`, etc)
78
+ # @option arguments [List] :search_types A comma-separated list of types to perform the query against
79
+ # (default: the same type as the document)
80
+ # @option arguments [List] :stop_words A list of stop words to be ignored
81
+ #
82
+ # @see http://elasticsearch.org/guide/reference/api/more-like-this/
83
+ #
84
+ def mlt(arguments={})
85
+ raise ArgumentError, "Required argument 'index' missing" unless arguments[:index]
86
+ raise ArgumentError, "Required argument 'type' missing" unless arguments[:type]
87
+ raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
88
+ method = HTTP_GET
89
+ path = Utils.__pathify Utils.__escape(arguments[:index]),
90
+ Utils.__escape(arguments[:type]),
91
+ Utils.__escape(arguments[:id]),
92
+ '_mlt'
93
+
94
+ params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
95
+
96
+ [:mlt_fields, :search_indices, :search_types, :stop_words].each do |name|
97
+ params[name] = Utils.__listify(params[name]) if params[name]
98
+ end
99
+
100
+ body = arguments[:body]
101
+
102
+ perform_request(method, path, params, body).body
103
+ end
104
+
105
+ # Register this action with its valid params when the module is loaded.
106
+ #
107
+ # @since 6.2.0
108
+ ParamsRegistry.register(:mlt, [
109
+ :boost_terms,
110
+ :max_doc_freq,
111
+ :max_query_terms,
112
+ :max_word_len,
113
+ :min_doc_freq,
114
+ :min_term_freq,
115
+ :min_word_len,
116
+ :mlt_fields,
117
+ :percent_terms_to_match,
118
+ :routing,
119
+ :search_from,
120
+ :search_indices,
121
+ :search_query_hint,
122
+ :search_scroll,
123
+ :search_size,
124
+ :search_source,
125
+ :search_type,
126
+ :search_types,
127
+ :stop_words ].freeze)
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,62 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Perform multiple percolate operations in a single request, similar to the {#msearch} API
6
+ #
7
+ # Pass the percolate definitions as header-body pairs in the `:body` argument, as an Array of Hashes.
8
+ #
9
+ # @example Perform two different percolations in a single request
10
+ #
11
+ # client.mpercolate \
12
+ # body: [
13
+ # { percolate: { index: "my-index", type: "my-type" } },
14
+ # { doc: { message: "foo bar" } },
15
+ # { percolate: { index: "my-other-index", type: "my-other-type", id: "1" } },
16
+ # { }
17
+ # ]
18
+ #
19
+ # @option arguments [String] :index The index of the document being count percolated to use as default
20
+ # @option arguments [String] :type The type of the document being percolated to use as default.
21
+ # @option arguments [Array<Hash>] The percolate request definitions (header & body pairs) (*Required*)
22
+ # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
23
+ # unavailable (missing or closed)
24
+ # @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
25
+ # no concrete indices. (This includes `_all` string or when no
26
+ # indices have been specified)
27
+ # @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that are
28
+ # open, closed or both. (options: open, closed)
29
+ #
30
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-percolate.html
31
+ #
32
+ def mpercolate(arguments={})
33
+ raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
34
+ method = HTTP_GET
35
+ path = "_mpercolate"
36
+
37
+ params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
38
+ body = arguments[:body]
39
+
40
+ case
41
+ when body.is_a?(Array)
42
+ payload = body.map { |d| d.is_a?(String) ? d : Elasticsearch::API.serializer.dump(d) }
43
+ payload << "" unless payload.empty?
44
+ payload = payload.join("\n")
45
+ else
46
+ payload = body
47
+ end
48
+
49
+ perform_request(method, path, params, payload).body
50
+ end
51
+
52
+ # Register this action with its valid params when the module is loaded.
53
+ #
54
+ # @since 6.2.0
55
+ ParamsRegistry.register(:mpercolate, [
56
+ :ignore_unavailable,
57
+ :allow_no_indices,
58
+ :expand_wildcards,
59
+ :percolate_format ].freeze)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,39 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Nodes
4
+ module Actions
5
+
6
+ # Shutdown one or all nodes
7
+ #
8
+ # @example Shut down node named _Bloke_
9
+ #
10
+ # client.nodes.shutdown node_id: 'Bloke'
11
+ #
12
+ # @option arguments [List] :node_id A comma-separated list of node IDs or names to perform the operation on; use
13
+ # `_local` to shutdown the node you're connected to, leave empty to
14
+ # shutdown all nodes
15
+ # @option arguments [Time] :delay Set the delay for the operation (default: 1s)
16
+ # @option arguments [Boolean] :exit Exit the JVM as well (default: true)
17
+ #
18
+ # @see http://elasticsearch.org/guide/reference/api/admin-cluster-nodes-shutdown/
19
+ #
20
+ def shutdown(arguments={})
21
+ method = HTTP_POST
22
+ path = Utils.__pathify '_cluster/nodes', Utils.__listify(arguments[:node_id]), '_shutdown'
23
+
24
+ params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
25
+ body = nil
26
+
27
+ perform_request(method, path, params, body).body
28
+ end
29
+
30
+ # Register this action with its valid params when the module is loaded.
31
+ #
32
+ # @since 6.2.0
33
+ ParamsRegistry.register(:shutdown, [
34
+ :delay,
35
+ :exit ].freeze)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,73 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Return names of queries matching a document.
6
+ #
7
+ # Percolator allows you to register queries and then evaluate a document against them:
8
+ # the IDs of matching queries are returned in the response.
9
+ #
10
+ # @deprecated The `_percolate` API has been deprecated in favour of a special field mapping and the
11
+ # `percolate` query;
12
+ # see https://www.elastic.co/guide/en/elasticsearch/reference/5.5/breaking_50_percolator.html
13
+ #
14
+ # See full example for Elasticsearch 5.x and higher in <https://github.com/elastic/elasticsearch-ruby/blob/master/examples/percolator/percolator_alerts.rb>
15
+ #
16
+ # @option arguments [String] :index The index of the document being percolated. (*Required*)
17
+ # @option arguments [String] :type The type of the document being percolated. (*Required*)
18
+ # @option arguments [String] :id Fetch the document specified by index/type/id and
19
+ # use it instead of the passed `doc`
20
+ # @option arguments [Hash] :body The percolator request definition using the percolate DSL
21
+ # @option arguments [List] :routing A comma-separated list of specific routing values
22
+ # @option arguments [String] :preference Specify the node or shard the operation should be performed on
23
+ # (default: random)
24
+ # @option arguments [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
25
+ # unavailable (missing or closed)
26
+ # @option arguments [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
27
+ # no concrete indices. (This includes `_all` string or when no
28
+ # indices have been specified)
29
+ # @option arguments [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that are
30
+ # open, closed or both. (options: open, closed)
31
+ # @option arguments [String] :percolate_index The index to percolate the document into. Defaults to passed `index`.
32
+ # @option arguments [String] :percolate_format Return an array of matching query IDs instead of objects.
33
+ # (options: ids)
34
+ # @option arguments [String] :percolate_type The type to percolate document into. Defaults to passed `type`.
35
+ # @option arguments [Number] :version Explicit version number for concurrency control
36
+ # @option arguments [String] :version_type Specific version type (options: internal, external, external_gte, force)
37
+ #
38
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-percolate.html
39
+ #
40
+ def percolate(arguments={})
41
+ Utils.__report_unsupported_method :percolate
42
+
43
+ raise ArgumentError, "Required argument 'index' missing" unless arguments[:index]
44
+ raise ArgumentError, "Required argument 'type' missing" unless arguments[:type]
45
+ method = HTTP_GET
46
+ path = Utils.__pathify Utils.__escape(arguments[:index]),
47
+ Utils.__escape(arguments[:type]),
48
+ Utils.__escape(arguments[:id]),
49
+ '_percolate'
50
+
51
+ params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
52
+ body = arguments[:body]
53
+
54
+ perform_request(method, path, params, body).body
55
+ end
56
+
57
+ # Register this action with its valid params when the module is loaded.
58
+ #
59
+ # @since 6.2.0
60
+ ParamsRegistry.register(:percolate, [
61
+ :routing,
62
+ :preference,
63
+ :ignore_unavailable,
64
+ :allow_no_indices,
65
+ :expand_wildcards,
66
+ :percolate_index,
67
+ :percolate_type,
68
+ :percolate_format,
69
+ :version,
70
+ :version_type ].freeze)
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,25 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Actions
4
+
5
+ # Store a template for the search definition in Elasticsearch,
6
+ # to be later used with the `search_template` method
7
+ #
8
+ # @option arguments [String] :id Template ID (*Required*)
9
+ # @option arguments [Hash] :body The document (*Required*)
10
+ #
11
+ # @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/search-template.html
12
+ #
13
+ def put_template(arguments={})
14
+ raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
15
+ raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
16
+ method = HTTP_POST
17
+ path = "_scripts/#{arguments[:id]}"
18
+ params = {}
19
+ body = arguments[:body]
20
+
21
+ perform_request(method, path, params, body).body
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ module Elasticsearch
2
+ module API
3
+ module Remote
4
+ module Actions
5
+
6
+ # Returns all of the configured remote cluster information
7
+ #
8
+ # @see http://www.elastic.co/guide/en/elasticsearch/reference/master/remote-info.html
9
+ #
10
+ def info(arguments={})
11
+ method = HTTP_GET
12
+ path = "_remote/info"
13
+ params = {}
14
+ body = nil
15
+
16
+ perform_request(method, path, params, body).body
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end