elasticsearch-api 7.4.0 → 7.5.0.pre.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +16 -23
  3. data/lib/elasticsearch/api/actions/abort_benchmark.rb +1 -2
  4. data/lib/elasticsearch/api/actions/benchmark.rb +2 -3
  5. data/lib/elasticsearch/api/actions/bulk.rb +35 -68
  6. data/lib/elasticsearch/api/actions/cat/aliases.rb +30 -52
  7. data/lib/elasticsearch/api/actions/cat/allocation.rb +36 -50
  8. data/lib/elasticsearch/api/actions/cat/count.rb +25 -46
  9. data/lib/elasticsearch/api/actions/cat/fielddata.rb +31 -33
  10. data/lib/elasticsearch/api/actions/cat/health.rb +27 -37
  11. data/lib/elasticsearch/api/actions/cat/help.rb +14 -10
  12. data/lib/elasticsearch/api/actions/cat/indices.rb +45 -62
  13. data/lib/elasticsearch/api/actions/cat/master.rb +24 -34
  14. data/lib/elasticsearch/api/actions/cat/nodeattrs.rb +20 -16
  15. data/lib/elasticsearch/api/actions/cat/nodes.rb +34 -46
  16. data/lib/elasticsearch/api/actions/cat/params_registry.rb +0 -1
  17. data/lib/elasticsearch/api/actions/cat/pending_tasks.rb +29 -35
  18. data/lib/elasticsearch/api/actions/cat/plugins.rb +21 -18
  19. data/lib/elasticsearch/api/actions/cat/recovery.rb +40 -56
  20. data/lib/elasticsearch/api/actions/cat/repositories.rb +21 -24
  21. data/lib/elasticsearch/api/actions/cat/segments.rb +29 -22
  22. data/lib/elasticsearch/api/actions/cat/shards.rb +38 -59
  23. data/lib/elasticsearch/api/actions/cat/snapshots.rb +32 -27
  24. data/lib/elasticsearch/api/actions/cat/tasks.rb +25 -19
  25. data/lib/elasticsearch/api/actions/cat/templates.rb +26 -18
  26. data/lib/elasticsearch/api/actions/cat/thread_pool.rb +36 -46
  27. data/lib/elasticsearch/api/actions/clear_scroll.rb +21 -8
  28. data/lib/elasticsearch/api/actions/cluster/allocation_explain.rb +15 -13
  29. data/lib/elasticsearch/api/actions/cluster/get_settings.rb +18 -18
  30. data/lib/elasticsearch/api/actions/cluster/health.rb +42 -44
  31. data/lib/elasticsearch/api/actions/cluster/params_registry.rb +0 -1
  32. data/lib/elasticsearch/api/actions/cluster/pending_tasks.rb +15 -17
  33. data/lib/elasticsearch/api/actions/cluster/put_settings.rb +20 -17
  34. data/lib/elasticsearch/api/actions/cluster/remote_info.rb +8 -6
  35. data/lib/elasticsearch/api/actions/cluster/reroute.rb +25 -37
  36. data/lib/elasticsearch/api/actions/cluster/state.rb +37 -41
  37. data/lib/elasticsearch/api/actions/cluster/stats.rb +20 -12
  38. data/lib/elasticsearch/api/actions/count.rb +52 -39
  39. data/lib/elasticsearch/api/actions/create.rb +25 -26
  40. data/lib/elasticsearch/api/actions/delete.rb +43 -36
  41. data/lib/elasticsearch/api/actions/delete_by_query.rb +74 -62
  42. data/lib/elasticsearch/api/actions/delete_by_query_rethrottle.rb +39 -0
  43. data/lib/elasticsearch/api/actions/delete_by_rethrottle.rb +4 -3
  44. data/lib/elasticsearch/api/actions/delete_script.rb +19 -13
  45. data/lib/elasticsearch/api/actions/exists.rb +44 -34
  46. data/lib/elasticsearch/api/actions/exists_source.rb +43 -25
  47. data/lib/elasticsearch/api/actions/explain.rb +46 -51
  48. data/lib/elasticsearch/api/actions/field_caps.rb +27 -20
  49. data/lib/elasticsearch/api/actions/get.rb +42 -41
  50. data/lib/elasticsearch/api/actions/get_script.rb +19 -14
  51. data/lib/elasticsearch/api/actions/get_source.rb +38 -44
  52. data/lib/elasticsearch/api/actions/index.rb +60 -89
  53. data/lib/elasticsearch/api/actions/indices/analyze.rb +19 -48
  54. data/lib/elasticsearch/api/actions/indices/clear_cache.rb +29 -41
  55. data/lib/elasticsearch/api/actions/indices/clone.rb +21 -21
  56. data/lib/elasticsearch/api/actions/indices/close.rb +28 -32
  57. data/lib/elasticsearch/api/actions/indices/create.rb +22 -70
  58. data/lib/elasticsearch/api/actions/indices/delete.rb +23 -35
  59. data/lib/elasticsearch/api/actions/indices/delete_alias.rb +24 -20
  60. data/lib/elasticsearch/api/actions/indices/delete_template.rb +18 -20
  61. data/lib/elasticsearch/api/actions/indices/exists.rb +32 -34
  62. data/lib/elasticsearch/api/actions/indices/exists_alias.rb +33 -29
  63. data/lib/elasticsearch/api/actions/indices/exists_template.rb +21 -16
  64. data/lib/elasticsearch/api/actions/indices/exists_type.rb +29 -29
  65. data/lib/elasticsearch/api/actions/indices/flush.rb +28 -28
  66. data/lib/elasticsearch/api/actions/indices/flush_synced.rb +23 -12
  67. data/lib/elasticsearch/api/actions/indices/forcemerge.rb +26 -41
  68. data/lib/elasticsearch/api/actions/indices/freeze.rb +7 -8
  69. data/lib/elasticsearch/api/actions/indices/get.rb +25 -19
  70. data/lib/elasticsearch/api/actions/indices/get_alias.rb +31 -23
  71. data/lib/elasticsearch/api/actions/indices/get_field_mapping.rb +42 -38
  72. data/lib/elasticsearch/api/actions/indices/get_mapping.rb +39 -31
  73. data/lib/elasticsearch/api/actions/indices/get_settings.rb +34 -37
  74. data/lib/elasticsearch/api/actions/indices/get_template.rb +21 -23
  75. data/lib/elasticsearch/api/actions/indices/get_upgrade.rb +48 -0
  76. data/lib/elasticsearch/api/actions/indices/open.rb +24 -21
  77. data/lib/elasticsearch/api/actions/indices/params_registry.rb +0 -1
  78. data/lib/elasticsearch/api/actions/indices/put_alias.rb +25 -27
  79. data/lib/elasticsearch/api/actions/indices/put_mapping.rb +40 -39
  80. data/lib/elasticsearch/api/actions/indices/put_settings.rb +30 -37
  81. data/lib/elasticsearch/api/actions/indices/put_template.rb +23 -23
  82. data/lib/elasticsearch/api/actions/indices/recovery.rb +20 -23
  83. data/lib/elasticsearch/api/actions/indices/refresh.rb +22 -26
  84. data/lib/elasticsearch/api/actions/indices/rollover.rb +28 -19
  85. data/lib/elasticsearch/api/actions/indices/segments.rb +24 -17
  86. data/lib/elasticsearch/api/actions/indices/shard_stores.rb +27 -15
  87. data/lib/elasticsearch/api/actions/indices/shrink.rb +23 -17
  88. data/lib/elasticsearch/api/actions/indices/split.rb +23 -17
  89. data/lib/elasticsearch/api/actions/indices/stats.rb +53 -104
  90. data/lib/elasticsearch/api/actions/indices/unfreeze.rb +7 -7
  91. data/lib/elasticsearch/api/actions/indices/update_aliases.rb +15 -32
  92. data/lib/elasticsearch/api/actions/indices/upgrade.rb +26 -16
  93. data/lib/elasticsearch/api/actions/indices/validate_query.rb +46 -59
  94. data/lib/elasticsearch/api/actions/info.rb +9 -6
  95. data/lib/elasticsearch/api/actions/ingest/delete_pipeline.rb +18 -12
  96. data/lib/elasticsearch/api/actions/ingest/get_pipeline.rb +21 -11
  97. data/lib/elasticsearch/api/actions/ingest/params_registry.rb +0 -1
  98. data/lib/elasticsearch/api/actions/ingest/processor_grok.rb +12 -13
  99. data/lib/elasticsearch/api/actions/ingest/put_pipeline.rb +19 -14
  100. data/lib/elasticsearch/api/actions/ingest/simulate.rb +23 -13
  101. data/lib/elasticsearch/api/actions/mget.rb +37 -44
  102. data/lib/elasticsearch/api/actions/msearch.rb +54 -54
  103. data/lib/elasticsearch/api/actions/msearch_template.rb +46 -35
  104. data/lib/elasticsearch/api/actions/mtermvectors.rb +39 -35
  105. data/lib/elasticsearch/api/actions/nodes/hot_threads.rb +30 -25
  106. data/lib/elasticsearch/api/actions/nodes/info.rb +29 -63
  107. data/lib/elasticsearch/api/actions/nodes/params_registry.rb +0 -1
  108. data/lib/elasticsearch/api/actions/nodes/reload_secure_settings.rb +24 -22
  109. data/lib/elasticsearch/api/actions/nodes/shutdown.rb +4 -4
  110. data/lib/elasticsearch/api/actions/nodes/stats.rb +43 -36
  111. data/lib/elasticsearch/api/actions/nodes/usage.rb +31 -10
  112. data/lib/elasticsearch/api/actions/params_registry.rb +0 -1
  113. data/lib/elasticsearch/api/actions/ping.rb +12 -13
  114. data/lib/elasticsearch/api/actions/put_script.rb +26 -30
  115. data/lib/elasticsearch/api/actions/rank_eval.rb +24 -15
  116. data/lib/elasticsearch/api/actions/reindex.rb +25 -48
  117. data/lib/elasticsearch/api/actions/reindex_rethrottle.rb +18 -12
  118. data/lib/elasticsearch/api/actions/remote/info.rb +1 -2
  119. data/lib/elasticsearch/api/actions/render_search_template.rb +17 -15
  120. data/lib/elasticsearch/api/actions/scripts_painless_execute.rb +8 -6
  121. data/lib/elasticsearch/api/actions/scroll.rb +28 -51
  122. data/lib/elasticsearch/api/actions/search.rb +104 -165
  123. data/lib/elasticsearch/api/actions/search_shards.rb +31 -28
  124. data/lib/elasticsearch/api/actions/search_template.rb +48 -40
  125. data/lib/elasticsearch/api/actions/snapshot/cleanup_repository.rb +44 -0
  126. data/lib/elasticsearch/api/actions/snapshot/create.rb +22 -29
  127. data/lib/elasticsearch/api/actions/snapshot/create_repository.rb +19 -24
  128. data/lib/elasticsearch/api/actions/snapshot/delete.rb +20 -22
  129. data/lib/elasticsearch/api/actions/snapshot/delete_repository.rb +16 -18
  130. data/lib/elasticsearch/api/actions/snapshot/get.rb +22 -31
  131. data/lib/elasticsearch/api/actions/snapshot/get_repository.rb +21 -25
  132. data/lib/elasticsearch/api/actions/snapshot/params_registry.rb +0 -1
  133. data/lib/elasticsearch/api/actions/snapshot/restore.rb +21 -32
  134. data/lib/elasticsearch/api/actions/snapshot/status.rb +23 -24
  135. data/lib/elasticsearch/api/actions/snapshot/verify_repository.rb +18 -13
  136. data/lib/elasticsearch/api/actions/tasks/cancel.rb +19 -13
  137. data/lib/elasticsearch/api/actions/tasks/get.rb +16 -13
  138. data/lib/elasticsearch/api/actions/tasks/list.rb +20 -18
  139. data/lib/elasticsearch/api/actions/tasks/params_registry.rb +0 -1
  140. data/lib/elasticsearch/api/actions/termvectors.rb +52 -70
  141. data/lib/elasticsearch/api/actions/update.rb +53 -98
  142. data/lib/elasticsearch/api/actions/update_by_query.rb +77 -66
  143. data/lib/elasticsearch/api/actions/update_by_query_rethrottle.rb +17 -11
  144. data/lib/elasticsearch/api/version.rb +1 -1
  145. data/spec/elasticsearch/api/actions/cat/segments_spec.rb +9 -11
  146. data/spec/elasticsearch/api/actions/cluster/put_settings_spec.rb +1 -1
  147. data/spec/elasticsearch/api/actions/count_spec.rb +8 -8
  148. data/spec/elasticsearch/api/actions/delete_by_query_spec.rb +12 -7
  149. data/spec/elasticsearch/api/actions/delete_script_spec.rb +0 -14
  150. data/spec/elasticsearch/api/actions/exists_document_spec.rb +1 -1
  151. data/spec/elasticsearch/api/actions/get_document_source_spec.rb +1 -1
  152. data/spec/elasticsearch/api/actions/index_document_spec.rb +6 -15
  153. data/spec/elasticsearch/api/actions/indices/analyze_spec.rb +0 -4
  154. data/spec/elasticsearch/api/actions/indices/clear_cache_spec.rb +1 -5
  155. data/spec/elasticsearch/api/actions/indices/clone_spec.rb +1 -1
  156. data/spec/elasticsearch/api/actions/indices/delete_alias_spec.rb +2 -2
  157. data/spec/elasticsearch/api/actions/indices/get_spec.rb +0 -11
  158. data/spec/elasticsearch/api/actions/indices/put_alias_spec.rb +3 -3
  159. data/spec/elasticsearch/api/actions/indices/put_mapping_spec.rb +3 -3
  160. data/spec/elasticsearch/api/actions/indices/stats_spec.rb +0 -1
  161. data/spec/elasticsearch/api/actions/nodes/hot_threads_spec.rb +3 -3
  162. data/spec/elasticsearch/api/actions/put_script_spec.rb +20 -15
  163. data/spec/elasticsearch/api/actions/render_search_template_spec.rb +23 -7
  164. data/spec/elasticsearch/api/actions/scroll_spec.rb +37 -0
  165. data/spec/elasticsearch/api/actions/search_spec.rb +0 -15
  166. data/spec/elasticsearch/api/actions/tasks/list_spec.rb +0 -11
  167. data/spec/elasticsearch/api/actions/update_document_spec.rb +3 -7
  168. data/spec/rest_yaml_tests_helper.rb +12 -0
  169. data/utils/Gemfile +1 -0
  170. data/utils/Thorfile +0 -1
  171. data/utils/thor/generate_source.rb +192 -85
  172. data/utils/thor/generator/endpoint_specifics.rb +157 -0
  173. data/utils/thor/generator/files_helper.rb +37 -0
  174. data/utils/thor/lister.rb +3 -4
  175. data/utils/thor/templates/_documentation_top.erb +27 -0
  176. data/utils/thor/templates/_method_setup.erb +35 -0
  177. data/utils/thor/templates/_params_registry.erb +12 -0
  178. data/utils/thor/templates/_perform_request.erb +37 -0
  179. data/utils/thor/templates/method.erb +59 -0
  180. data/utils/thor/templates/{ruby/test.erb → test.erb} +0 -0
  181. data/utils/thor/templates/{ruby/test_helper.rb → test_helper.rb} +0 -0
  182. metadata +19 -11
  183. data/spec/elasticsearch/api/actions/scoll_spec.rb +0 -21
  184. data/utils/thor/generate_api.rb +0 -193
  185. data/utils/thor/templates/ruby/method.erb +0 -62
@@ -6,35 +6,40 @@ module Elasticsearch
6
6
  module API
7
7
  module Ingest
8
8
  module Actions
9
-
10
- # Add or update a specified pipeline
9
+ # Creates or updates a pipeline.
11
10
  #
12
- # @option arguments [String] :id Pipeline ID (*Required*)
13
- # @option arguments [Hash] :body The ingest definition (*Required*)
11
+ # @option arguments [String] :id Pipeline ID
14
12
  # @option arguments [Time] :master_timeout Explicit operation timeout for connection to master node
15
13
  # @option arguments [Time] :timeout Explicit operation timeout
14
+
15
+ # @option arguments [Hash] :body The ingest definition (*Required*)
16
16
  #
17
- # @see https://www.elastic.co/guide/en/elasticsearch/plugins/master/ingest.html
17
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/put-pipeline-api.html
18
18
  #
19
- def put_pipeline(arguments={})
20
- raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
19
+ def put_pipeline(arguments = {})
21
20
  raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
22
- method = 'PUT'
23
- path = Utils.__pathify "_ingest/pipeline", Utils.__escape(arguments[:id])
21
+ raise ArgumentError, "Required argument 'id' missing" unless arguments[:id]
22
+
23
+ arguments = arguments.clone
24
24
 
25
+ _id = arguments.delete(:id)
26
+
27
+ method = Elasticsearch::API::HTTP_PUT
28
+ path = "_ingest/pipeline/#{Utils.__listify(_id)}"
25
29
  params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
26
- body = arguments[:body]
27
30
 
31
+ body = arguments[:body]
28
32
  perform_request(method, path, params, body).body
29
33
  end
30
34
 
31
35
  # Register this action with its valid params when the module is loaded.
32
36
  #
33
- # @since 6.1.1
37
+ # @since 6.2.0
34
38
  ParamsRegistry.register(:put_pipeline, [
35
- :master_timeout,
36
- :timeout ].freeze)
39
+ :master_timeout,
40
+ :timeout
41
+ ].freeze)
42
+ end
37
43
  end
38
- end
39
44
  end
40
45
  end
@@ -6,31 +6,41 @@ module Elasticsearch
6
6
  module API
7
7
  module Ingest
8
8
  module Actions
9
-
10
- # Execute a specific pipeline against the set of documents provided in the body of the request
9
+ # Allows to simulate a pipeline with example documents.
11
10
  #
12
11
  # @option arguments [String] :id Pipeline ID
13
- # @option arguments [Hash] :body The pipeline definition (*Required*)
14
- # @option arguments [Boolean] :verbose Verbose mode. Display data output for each processor
15
- # in executed pipeline
12
+ # @option arguments [Boolean] :verbose Verbose mode. Display data output for each processor in executed pipeline
13
+
14
+ # @option arguments [Hash] :body The simulate definition (*Required*)
16
15
  #
17
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/simulate-pipeline-api.html
16
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/simulate-pipeline-api.html
18
17
  #
19
- def simulate(arguments={})
18
+ def simulate(arguments = {})
20
19
  raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
21
- method = 'GET'
22
- path = Utils.__pathify "_ingest/pipeline", Utils.__escape(arguments[:id]), '_simulate'
20
+
21
+ arguments = arguments.clone
22
+
23
+ _id = arguments.delete(:id)
24
+
25
+ method = Elasticsearch::API::HTTP_GET
26
+ path = if _id
27
+ "_ingest/pipeline/#{Utils.__listify(_id)}/_simulate"
28
+ else
29
+ "_ingest/pipeline/_simulate"
30
+ end
23
31
  params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
24
- body = arguments[:body]
25
32
 
33
+ body = arguments[:body]
26
34
  perform_request(method, path, params, body).body
27
35
  end
28
36
 
29
37
  # Register this action with its valid params when the module is loaded.
30
38
  #
31
- # @since 6.1.1
32
- ParamsRegistry.register(:simulate, [ :verbose ].freeze)
39
+ # @since 6.2.0
40
+ ParamsRegistry.register(:simulate, [
41
+ :verbose
42
+ ].freeze)
43
+ end
33
44
  end
34
- end
35
45
  end
36
46
  end
@@ -5,33 +5,10 @@
5
5
  module Elasticsearch
6
6
  module API
7
7
  module Actions
8
-
9
- # Return multiple documents from one or more indices in a single request.
10
- #
11
- # Pass the request definition in the `:body` argument, either as an Array of `docs` specifications,
12
- # or `ids`, when the `:index` and document `:type` are specified.
13
- #
14
- # @example Get multiple documents fully specified in the `docs` definition
15
- #
16
- # client.mget body: {
17
- # docs: [
18
- # { _index: 'myindex', _type: 'mytype', _id: '1' },
19
- # { _index: 'myindex', _type: 'mytype', _id: '2' },
20
- # { _index: 'myindex', _type: 'mytype', _id: '3' }
21
- # ]
22
- # }
23
- #
24
- # @example Get multiple documents specified by `ids` while passing `:index` and `:type`
25
- #
26
- # client.mget index: 'myindex', type: 'mytype', body: { ids: ['1', '2', '3'] }
27
- #
28
- # @example Get only specific fields from documents
29
- #
30
- # client.mget index: 'myindex', type: 'mytype', body: { ids: ['1', '2', '3'] }, fields: ['title']
8
+ # Allows to get multiple documents in one request.
31
9
  #
32
10
  # @option arguments [String] :index The name of the index
33
- # @option arguments [String] :type The type of the document
34
- # @option arguments [Hash] :body Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. (*Required*)
11
+ # @option arguments [String] :type The type of the document *Deprecated*
35
12
  # @option arguments [List] :stored_fields A comma-separated list of stored fields to return in the response
36
13
  # @option arguments [String] :preference Specify the node or shard the operation should be performed on (default: random)
37
14
  # @option arguments [Boolean] :realtime Specify whether to perform the operation in realtime or search mode
@@ -40,36 +17,52 @@ module Elasticsearch
40
17
  # @option arguments [List] :_source True or false to return the _source field or not, or a list of fields to return
41
18
  # @option arguments [List] :_source_excludes A list of fields to exclude from the returned _source field
42
19
  # @option arguments [List] :_source_includes A list of fields to extract and return from the _source field
20
+
21
+ # @option arguments [Hash] :body Document identifiers; can be either `docs` (containing full document information) or `ids` (when index and type is provided in the URL. (*Required*)
22
+ #
23
+ # *Deprecation notice*:
24
+ # Specifying types in urls has been deprecated
25
+ # Deprecated since version 7.0.0
26
+ #
43
27
  #
44
- # @see http://elasticsearch.org/guide/reference/api/multi-get/
28
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docs-multi-get.html
45
29
  #
46
- def mget(arguments={})
30
+ def mget(arguments = {})
47
31
  raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
48
- method = HTTP_GET
49
- path = Utils.__pathify Utils.__escape(arguments[:index]),
50
- Utils.__escape(arguments[:type]),
51
- '_mget'
52
32
 
53
- params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
54
- body = arguments[:body]
33
+ arguments = arguments.clone
34
+
35
+ _index = arguments.delete(:index)
55
36
 
56
- params[:fields] = Utils.__listify(params[:fields]) if params[:fields]
37
+ _type = arguments.delete(:type)
57
38
 
39
+ method = Elasticsearch::API::HTTP_GET
40
+ path = if _index && _type
41
+ "#{Utils.__listify(_index)}/#{Utils.__listify(_type)}/_mget"
42
+ elsif _index
43
+ "#{Utils.__listify(_index)}/_mget"
44
+ else
45
+ "_mget"
46
+ end
47
+ params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
48
+
49
+ body = arguments[:body]
58
50
  perform_request(method, path, params, body).body
59
51
  end
60
52
 
61
53
  # Register this action with its valid params when the module is loaded.
62
54
  #
63
- # @since 6.1.1
55
+ # @since 6.2.0
64
56
  ParamsRegistry.register(:mget, [
65
- :stored_fields,
66
- :preference,
67
- :realtime,
68
- :refresh,
69
- :routing,
70
- :_source,
71
- :_source_excludes,
72
- :_source_includes ].freeze)
57
+ :stored_fields,
58
+ :preference,
59
+ :realtime,
60
+ :refresh,
61
+ :routing,
62
+ :_source,
63
+ :_source_excludes,
64
+ :_source_includes
65
+ ].freeze)
66
+ end
73
67
  end
74
- end
75
68
  end
@@ -5,88 +5,88 @@
5
5
  module Elasticsearch
6
6
  module API
7
7
  module Actions
8
-
9
- # Perform multiple search operations in a single request.
10
- #
11
- # Pass the search definitions in the `:body` argument
12
- #
13
- # @example Perform multiple different searches as `:search`
14
- #
15
- # client.msearch \
16
- # body: [
17
- # { search: { query: { match_all: {} } } },
18
- # { index: 'myindex', type: 'mytype', search: { query: { query_string: { query: '"Test 1"' } } } },
19
- # { search_type: 'count', search: { aggregations: { published: { terms: { field: 'published' } } } } }
20
- # ]
21
- #
22
- # @example Perform multiple different searches as an array of meta/data pairs
23
- #
24
- # client.msearch \
25
- # body: [
26
- # { query: { match_all: {} } },
27
- # { index: 'myindex', type: 'mytype' },
28
- # { query: { query_string: { query: '"Test 1"' } } },
29
- # { search_type: 'query_then_fetch' },
30
- # { aggregations: { published: { terms: { field: 'published' } } } }
31
- # ]
8
+ # Allows to execute several search operations in one request.
32
9
  #
33
10
  # @option arguments [List] :index A comma-separated list of index names to use as default
34
11
  # @option arguments [List] :type A comma-separated list of document types to use as default
35
- # @option arguments [Hash] :body The request definitions (metadata-search request definition pairs), separated by newlines (*Required*)
36
- # @option arguments [String] :search_type Search operation type (options: query_then_fetch, query_and_fetch, dfs_query_then_fetch, dfs_query_and_fetch)
12
+ # @option arguments [String] :search_type Search operation type
13
+ # (options: query_then_fetch,query_and_fetch,dfs_query_then_fetch,dfs_query_and_fetch)
14
+
37
15
  # @option arguments [Number] :max_concurrent_searches Controls the maximum number of concurrent searches the multi search api will execute
38
16
  # @option arguments [Boolean] :typed_keys Specify whether aggregation and suggester names should be prefixed by their respective types in the response
39
17
  # @option arguments [Number] :pre_filter_shard_size A threshold that enforces a pre-filter roundtrip to prefilter search shards based on query rewriting if the number of shards the search request expands to exceeds the threshold. This filter roundtrip can limit the number of shards significantly if for instance a shard can not match any documents based on it's rewrite method ie. if date filters are mandatory to match but the shard bounds and the query are disjoint.
40
- # @option arguments [Number] :max_concurrent_shard_requests The number of concurrent shard requests each sub search executes concurrently. This value should be used to limit the impact of the search on the cluster in order to limit the number of concurrent shard requests
18
+ # @option arguments [Number] :max_concurrent_shard_requests The number of concurrent shard requests each sub search executes concurrently per node. This value should be used to limit the impact of the search on the cluster in order to limit the number of concurrent shard requests
41
19
  # @option arguments [Boolean] :rest_total_hits_as_int Indicates whether hits.total should be rendered as an integer or an object in the rest search response
42
20
  # @option arguments [Boolean] :ccs_minimize_roundtrips Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution
21
+
22
+ # @option arguments [Hash] :body The request definitions (metadata-search request definition pairs), separated by newlines (*Required*)
43
23
  #
44
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/5.x/search-multi-search.html
24
+ # *Deprecation notice*:
25
+ # Specifying types in urls has been deprecated
26
+ # Deprecated since version 7.0.0
45
27
  #
46
- def msearch(arguments={})
28
+ #
29
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/search-multi-search.html
30
+ #
31
+ def msearch(arguments = {})
47
32
  raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
48
- method = HTTP_GET
49
- path = Utils.__pathify( Utils.__listify(arguments[:index]), Utils.__listify(arguments[:type]), '_msearch' )
50
33
 
34
+ arguments = arguments.clone
35
+
36
+ _index = arguments.delete(:index)
37
+
38
+ _type = arguments.delete(:type)
39
+
40
+ method = Elasticsearch::API::HTTP_GET
41
+ path = if _index && _type
42
+ "#{Utils.__listify(_index)}/#{Utils.__listify(_type)}/_msearch"
43
+ elsif _index
44
+ "#{Utils.__listify(_index)}/_msearch"
45
+ else
46
+ "_msearch"
47
+ end
51
48
  params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
52
- body = arguments[:body]
53
49
 
50
+ body = arguments[:body]
54
51
  case
55
52
  when body.is_a?(Array) && body.any? { |d| d.has_key? :search }
56
- payload = body.
57
- inject([]) do |sum, item|
58
- meta = item
59
- data = meta.delete(:search)
53
+ payload = body
54
+ .inject([]) do |sum, item|
55
+ meta = item
56
+ data = meta.delete(:search)
60
57
 
61
- sum << meta
62
- sum << data
63
- sum
64
- end.
65
- map { |item| Elasticsearch::API.serializer.dump(item) }
58
+ sum << meta
59
+ sum << data
60
+ sum
61
+ end
62
+ .map { |item| Elasticsearch::API.serializer.dump(item) }
66
63
  payload << "" unless payload.empty?
67
- payload = payload.join("\n")
64
+ payload = payload.join("
65
+ ")
68
66
  when body.is_a?(Array)
69
67
  payload = body.map { |d| d.is_a?(String) ? d : Elasticsearch::API.serializer.dump(d) }
70
68
  payload << "" unless payload.empty?
71
- payload = payload.join("\n")
69
+ payload = payload.join("
70
+ ")
72
71
  else
73
72
  payload = body
74
- end
73
+ end
75
74
 
76
- perform_request(method, path, params, payload, {"Content-Type" => "application/x-ndjson"}).body
75
+ perform_request(method, path, params, payload, { "Content-Type" => "application/x-ndjson" }).body
77
76
  end
78
77
 
79
78
  # Register this action with its valid params when the module is loaded.
80
79
  #
81
- # @since 6.1.1
80
+ # @since 6.2.0
82
81
  ParamsRegistry.register(:msearch, [
83
- :search_type,
84
- :max_concurrent_searches,
85
- :typed_keys,
86
- :pre_filter_shard_size,
87
- :max_concurrent_shard_requests,
88
- :rest_total_hits_as_int,
89
- :ccs_minimize_roundtrips ].freeze)
82
+ :search_type,
83
+ :max_concurrent_searches,
84
+ :typed_keys,
85
+ :pre_filter_shard_size,
86
+ :max_concurrent_shard_requests,
87
+ :rest_total_hits_as_int,
88
+ :ccs_minimize_roundtrips
89
+ ].freeze)
90
+ end
90
91
  end
91
- end
92
92
  end
@@ -5,57 +5,68 @@
5
5
  module Elasticsearch
6
6
  module API
7
7
  module Actions
8
-
9
- # Execute several search requests using templates (inline, indexed or stored in a file)
10
- #
11
- # @example Search with an inline script
12
- #
13
- # client.msearch_template body: [
14
- # { index: 'test' },
15
- # { inline: { query: { match: { title: '{{q}}' } } }, params: { q: 'foo'} }
16
- # ]
8
+ # Allows to execute several search template operations in one request.
17
9
  #
18
10
  # @option arguments [List] :index A comma-separated list of index names to use as default
19
11
  # @option arguments [List] :type A comma-separated list of document types to use as default
20
- # @option arguments [Hash] :body The request definitions (metadata-search request definition pairs), separated by newlines (*Required*)
21
- # @option arguments [String] :search_type Search operation type (options: query_then_fetch, query_and_fetch, dfs_query_then_fetch, dfs_query_and_fetch)
12
+ # @option arguments [String] :search_type Search operation type
13
+ # (options: query_then_fetch,query_and_fetch,dfs_query_then_fetch,dfs_query_and_fetch)
14
+
22
15
  # @option arguments [Boolean] :typed_keys Specify whether aggregation and suggester names should be prefixed by their respective types in the response
23
16
  # @option arguments [Number] :max_concurrent_searches Controls the maximum number of concurrent searches the multi search api will execute
24
17
  # @option arguments [Boolean] :rest_total_hits_as_int Indicates whether hits.total should be rendered as an integer or an object in the rest search response
25
- # @option arguments [Boolean] :ccs_minimize_roundtrips Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution
18
+
19
+ # @option arguments [Hash] :body The request definitions (metadata-search request definition pairs), separated by newlines (*Required*)
20
+ #
21
+ # *Deprecation notice*:
22
+ # Specifying types in urls has been deprecated
23
+ # Deprecated since version 7.0.0
24
+ #
26
25
  #
27
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-search-template.html
26
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/7.5/search-multi-search.html
28
27
  #
29
- def msearch_template(arguments={})
28
+ def msearch_template(arguments = {})
30
29
  raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
31
- method = HTTP_GET
32
- path = Utils.__pathify Utils.__listify(arguments[:index]),
33
- Utils.__listify(arguments[:type]),
34
- '_msearch/template'
30
+
31
+ arguments = arguments.clone
32
+
33
+ _index = arguments.delete(:index)
34
+
35
+ _type = arguments.delete(:type)
36
+
37
+ method = Elasticsearch::API::HTTP_GET
38
+ path = if _index && _type
39
+ "#{Utils.__listify(_index)}/#{Utils.__listify(_type)}/_msearch/template"
40
+ elsif _index
41
+ "#{Utils.__listify(_index)}/_msearch/template"
42
+ else
43
+ "_msearch/template"
44
+ end
35
45
  params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__)
36
- body = arguments[:body]
37
46
 
47
+ body = arguments[:body]
38
48
  case
39
- when body.is_a?(Array)
40
- payload = body.map { |d| d.is_a?(String) ? d : Elasticsearch::API.serializer.dump(d) }
41
- payload << "" unless payload.empty?
42
- payload = payload.join("\n")
43
- else
44
- payload = body
45
- end
46
-
47
- perform_request(method, path, params, payload, {"Content-Type" => "application/x-ndjson"}).body
49
+ when body.is_a?(Array)
50
+ payload = body.map { |d| d.is_a?(String) ? d : Elasticsearch::API.serializer.dump(d) }
51
+ payload << "" unless payload.empty?
52
+ payload = payload.join("
53
+ ")
54
+ else
55
+ payload = body
56
+ end
57
+
58
+ perform_request(method, path, params, payload, { "Content-Type" => "application/x-ndjson" }).body
48
59
  end
49
60
 
50
61
  # Register this action with its valid params when the module is loaded.
51
62
  #
52
- # @since 6.1.1
63
+ # @since 6.2.0
53
64
  ParamsRegistry.register(:msearch_template, [
54
- :search_type,
55
- :typed_keys,
56
- :max_concurrent_searches,
57
- :rest_total_hits_as_int,
58
- :ccs_minimize_roundtrips ].freeze)
65
+ :search_type,
66
+ :typed_keys,
67
+ :max_concurrent_searches,
68
+ :rest_total_hits_as_int
69
+ ].freeze)
70
+ end
59
71
  end
60
- end
61
72
  end