elasticsearch-api 7.17.1 → 8.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (768) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -9
  3. data/{LICENSE → LICENSE.txt} +0 -0
  4. data/README.md +26 -15
  5. data/Rakefile +21 -56
  6. data/api-spec-testing/README.md +118 -0
  7. data/api-spec-testing/logging.rb +28 -0
  8. data/api-spec-testing/rspec_matchers.rb +312 -0
  9. data/api-spec-testing/test_file/action.rb +168 -0
  10. data/api-spec-testing/test_file/task_group.rb +340 -0
  11. data/api-spec-testing/test_file/test.rb +295 -0
  12. data/api-spec-testing/test_file.rb +173 -0
  13. data/api-spec-testing/wipe_cluster.rb +388 -0
  14. data/elasticsearch-api.gemspec +11 -19
  15. data/lib/elasticsearch/api/actions/async_search/delete.rb +51 -0
  16. data/lib/elasticsearch/api/actions/async_search/get.rb +54 -0
  17. data/lib/elasticsearch/api/actions/async_search/status.rb +51 -0
  18. data/lib/elasticsearch/api/actions/async_search/submit.rb +95 -0
  19. data/lib/elasticsearch/api/actions/autoscaling/delete_autoscaling_policy.rb +51 -0
  20. data/lib/elasticsearch/api/actions/autoscaling/get_autoscaling_capacity.rb +46 -0
  21. data/lib/elasticsearch/api/actions/autoscaling/get_autoscaling_policy.rb +51 -0
  22. data/lib/elasticsearch/api/actions/autoscaling/put_autoscaling_policy.rb +53 -0
  23. data/lib/elasticsearch/api/actions/bulk.rb +8 -21
  24. data/lib/elasticsearch/api/actions/cat/aliases.rb +7 -17
  25. data/lib/elasticsearch/api/actions/cat/allocation.rb +7 -18
  26. data/lib/elasticsearch/api/actions/cat/count.rb +7 -15
  27. data/lib/elasticsearch/api/actions/cat/fielddata.rb +7 -17
  28. data/lib/elasticsearch/api/actions/cat/health.rb +7 -17
  29. data/lib/elasticsearch/api/actions/cat/help.rb +7 -12
  30. data/lib/elasticsearch/api/actions/cat/indices.rb +7 -24
  31. data/lib/elasticsearch/api/actions/cat/master.rb +7 -17
  32. data/lib/elasticsearch/api/actions/cat/ml_data_frame_analytics.rb +61 -0
  33. data/lib/elasticsearch/api/actions/cat/ml_datafeeds.rb +61 -0
  34. data/lib/elasticsearch/api/actions/cat/ml_jobs.rb +62 -0
  35. data/lib/elasticsearch/api/actions/cat/ml_trained_models.rb +63 -0
  36. data/lib/elasticsearch/api/actions/cat/nodeattrs.rb +7 -17
  37. data/lib/elasticsearch/api/actions/cat/nodes.rb +7 -22
  38. data/lib/elasticsearch/api/actions/cat/pending_tasks.rb +7 -18
  39. data/lib/elasticsearch/api/actions/cat/plugins.rb +7 -18
  40. data/lib/elasticsearch/api/actions/cat/recovery.rb +7 -20
  41. data/lib/elasticsearch/api/actions/cat/repositories.rb +7 -17
  42. data/lib/elasticsearch/api/actions/cat/segments.rb +7 -16
  43. data/lib/elasticsearch/api/actions/cat/shards.rb +7 -20
  44. data/lib/elasticsearch/api/actions/cat/snapshots.rb +7 -18
  45. data/lib/elasticsearch/api/actions/cat/tasks.rb +11 -20
  46. data/lib/elasticsearch/api/actions/cat/templates.rb +7 -17
  47. data/lib/elasticsearch/api/actions/cat/thread_pool.rb +8 -19
  48. data/lib/elasticsearch/api/actions/cat/transforms.rb +62 -0
  49. data/lib/elasticsearch/api/actions/clear_scroll.rb +6 -3
  50. data/lib/elasticsearch/api/actions/close_point_in_time.rb +6 -3
  51. data/lib/elasticsearch/api/actions/cluster/allocation_explain.rb +8 -13
  52. data/lib/elasticsearch/api/actions/cluster/delete_component_template.rb +7 -12
  53. data/lib/elasticsearch/api/actions/cluster/delete_voting_config_exclusions.rb +7 -11
  54. data/lib/elasticsearch/api/actions/cluster/exists_component_template.rb +7 -12
  55. data/lib/elasticsearch/api/actions/cluster/get_component_template.rb +7 -12
  56. data/lib/elasticsearch/api/actions/cluster/get_settings.rb +7 -14
  57. data/lib/elasticsearch/api/actions/cluster/health.rb +7 -21
  58. data/lib/elasticsearch/api/actions/cluster/pending_tasks.rb +7 -12
  59. data/lib/elasticsearch/api/actions/cluster/post_voting_config_exclusions.rb +7 -13
  60. data/lib/elasticsearch/api/actions/cluster/put_component_template.rb +7 -13
  61. data/lib/elasticsearch/api/actions/cluster/put_settings.rb +7 -13
  62. data/lib/elasticsearch/api/actions/cluster/remote_info.rb +6 -3
  63. data/lib/elasticsearch/api/actions/cluster/reroute.rb +7 -16
  64. data/lib/elasticsearch/api/actions/cluster/state.rb +7 -18
  65. data/lib/elasticsearch/api/actions/cluster/stats.rb +7 -12
  66. data/lib/elasticsearch/api/actions/count.rb +9 -41
  67. data/lib/elasticsearch/api/actions/create.rb +1 -1
  68. data/lib/elasticsearch/api/actions/cross_cluster_replication/delete_auto_follow_pattern.rb +51 -0
  69. data/lib/elasticsearch/api/actions/cross_cluster_replication/follow.rb +54 -0
  70. data/lib/elasticsearch/api/actions/cross_cluster_replication/follow_info.rb +51 -0
  71. data/lib/elasticsearch/api/actions/cross_cluster_replication/follow_stats.rb +51 -0
  72. data/lib/elasticsearch/api/actions/cross_cluster_replication/forget_follower.rb +53 -0
  73. data/lib/elasticsearch/api/actions/cross_cluster_replication/get_auto_follow_pattern.rb +53 -0
  74. data/lib/elasticsearch/api/actions/cross_cluster_replication/pause_auto_follow_pattern.rb +51 -0
  75. data/lib/elasticsearch/api/actions/cross_cluster_replication/pause_follow.rb +51 -0
  76. data/lib/elasticsearch/api/actions/cross_cluster_replication/put_auto_follow_pattern.rb +53 -0
  77. data/lib/elasticsearch/api/actions/cross_cluster_replication/resume_auto_follow_pattern.rb +51 -0
  78. data/lib/elasticsearch/api/actions/cross_cluster_replication/resume_follow.rb +52 -0
  79. data/lib/elasticsearch/api/actions/cross_cluster_replication/stats.rb +46 -0
  80. data/lib/elasticsearch/api/actions/cross_cluster_replication/unfollow.rb +51 -0
  81. data/lib/elasticsearch/api/actions/dangling_indices/delete_dangling_index.rb +7 -13
  82. data/lib/elasticsearch/api/actions/dangling_indices/import_dangling_index.rb +7 -13
  83. data/lib/elasticsearch/api/actions/dangling_indices/list_dangling_indices.rb +6 -3
  84. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/delete_transform.rb +59 -0
  85. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/get_transform.rb +64 -0
  86. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/get_transform_stats.rb +61 -0
  87. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/preview_transform.rb +56 -0
  88. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/put_transform.rb +61 -0
  89. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/start_transform.rb +59 -0
  90. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/stop_transform.rb +61 -0
  91. data/lib/elasticsearch/api/actions/data_frame_transform_deprecated/update_transform.rb +61 -0
  92. data/lib/elasticsearch/api/actions/delete.rb +13 -20
  93. data/lib/elasticsearch/api/actions/delete_by_query.rb +13 -56
  94. data/lib/elasticsearch/api/actions/delete_by_query_rethrottle.rb +7 -11
  95. data/lib/elasticsearch/api/actions/delete_script.rb +7 -12
  96. data/lib/elasticsearch/api/actions/enrich/delete_policy.rb +51 -0
  97. data/lib/elasticsearch/api/actions/enrich/execute_policy.rb +52 -0
  98. data/lib/elasticsearch/api/actions/enrich/get_policy.rb +53 -0
  99. data/lib/elasticsearch/api/actions/enrich/put_policy.rb +53 -0
  100. data/lib/elasticsearch/api/actions/enrich/stats.rb +46 -0
  101. data/lib/elasticsearch/api/actions/eql/delete.rb +51 -0
  102. data/lib/elasticsearch/api/actions/eql/get.rb +53 -0
  103. data/lib/elasticsearch/api/actions/eql/get_status.rb +51 -0
  104. data/lib/elasticsearch/api/actions/eql/search.rb +57 -0
  105. data/lib/elasticsearch/api/actions/exists.rb +6 -34
  106. data/lib/elasticsearch/api/actions/exists_source.rb +8 -20
  107. data/lib/elasticsearch/api/actions/explain.rb +9 -36
  108. data/lib/elasticsearch/api/actions/features/get_features.rb +7 -11
  109. data/lib/elasticsearch/api/actions/features/reset_features.rb +6 -3
  110. data/lib/elasticsearch/api/actions/field_caps.rb +8 -16
  111. data/lib/elasticsearch/api/actions/fleet/global_checkpoints.rb +55 -0
  112. data/lib/elasticsearch/api/actions/get.rb +14 -35
  113. data/lib/elasticsearch/api/actions/get_script.rb +7 -11
  114. data/lib/elasticsearch/api/actions/get_script_context.rb +6 -3
  115. data/lib/elasticsearch/api/actions/get_script_languages.rb +6 -3
  116. data/lib/elasticsearch/api/actions/get_source.rb +9 -33
  117. data/lib/elasticsearch/api/actions/graph/explore.rb +59 -0
  118. data/lib/elasticsearch/api/actions/index.rb +8 -34
  119. data/lib/elasticsearch/api/actions/index_lifecycle_management/delete_lifecycle.rb +51 -0
  120. data/lib/elasticsearch/api/actions/index_lifecycle_management/explain_lifecycle.rb +53 -0
  121. data/lib/elasticsearch/api/actions/index_lifecycle_management/get_lifecycle.rb +53 -0
  122. data/lib/elasticsearch/api/actions/index_lifecycle_management/get_status.rb +46 -0
  123. data/lib/elasticsearch/api/actions/index_lifecycle_management/migrate_to_data_tiers.rb +48 -0
  124. data/lib/elasticsearch/api/actions/index_lifecycle_management/move_to_step.rb +52 -0
  125. data/lib/elasticsearch/api/actions/index_lifecycle_management/put_lifecycle.rb +52 -0
  126. data/lib/elasticsearch/api/actions/index_lifecycle_management/remove_policy.rb +51 -0
  127. data/lib/elasticsearch/api/actions/index_lifecycle_management/retry.rb +51 -0
  128. data/lib/elasticsearch/api/actions/index_lifecycle_management/start.rb +46 -0
  129. data/lib/elasticsearch/api/actions/index_lifecycle_management/stop.rb +46 -0
  130. data/lib/elasticsearch/api/actions/indices/add_block.rb +7 -15
  131. data/lib/elasticsearch/api/actions/indices/analyze.rb +8 -12
  132. data/lib/elasticsearch/api/actions/indices/clear_cache.rb +7 -18
  133. data/lib/elasticsearch/api/actions/indices/clone.rb +7 -13
  134. data/lib/elasticsearch/api/actions/indices/close.rb +8 -17
  135. data/lib/elasticsearch/api/actions/indices/create.rb +7 -15
  136. data/lib/elasticsearch/api/actions/indices/create_data_stream.rb +51 -0
  137. data/lib/elasticsearch/api/actions/indices/data_streams_stats.rb +53 -0
  138. data/lib/elasticsearch/api/actions/indices/delete.rb +12 -16
  139. data/lib/elasticsearch/api/actions/indices/delete_alias.rb +7 -12
  140. data/lib/elasticsearch/api/actions/indices/delete_data_stream.rb +52 -0
  141. data/lib/elasticsearch/api/actions/indices/delete_index_template.rb +7 -16
  142. data/lib/elasticsearch/api/actions/indices/delete_template.rb +12 -13
  143. data/lib/elasticsearch/api/actions/indices/disk_usage.rb +7 -15
  144. data/lib/elasticsearch/api/actions/indices/exists.rb +4 -16
  145. data/lib/elasticsearch/api/actions/indices/exists_alias.rb +4 -14
  146. data/lib/elasticsearch/api/actions/indices/exists_index_template.rb +7 -16
  147. data/lib/elasticsearch/api/actions/indices/exists_template.rb +4 -13
  148. data/lib/elasticsearch/api/actions/indices/exists_type.rb +4 -14
  149. data/lib/elasticsearch/api/actions/indices/field_usage_stats.rb +7 -14
  150. data/lib/elasticsearch/api/actions/indices/flush.rb +7 -15
  151. data/lib/elasticsearch/api/actions/indices/forcemerge.rb +7 -16
  152. data/lib/elasticsearch/api/actions/indices/get.rb +7 -19
  153. data/lib/elasticsearch/api/actions/indices/get_alias.rb +7 -14
  154. data/lib/elasticsearch/api/actions/indices/get_data_stream.rb +54 -0
  155. data/lib/elasticsearch/api/actions/indices/get_field_mapping.rb +8 -30
  156. data/lib/elasticsearch/api/actions/indices/get_index_template.rb +8 -14
  157. data/lib/elasticsearch/api/actions/indices/get_mapping.rb +8 -30
  158. data/lib/elasticsearch/api/actions/indices/get_settings.rb +7 -17
  159. data/lib/elasticsearch/api/actions/indices/get_template.rb +7 -15
  160. data/lib/elasticsearch/api/actions/indices/migrate_to_data_stream.rb +51 -0
  161. data/lib/elasticsearch/api/actions/indices/modify_data_stream.rb +49 -0
  162. data/lib/elasticsearch/api/actions/indices/open.rb +7 -16
  163. data/lib/elasticsearch/api/actions/indices/promote_data_stream.rb +51 -0
  164. data/lib/elasticsearch/api/actions/indices/put_alias.rb +7 -12
  165. data/lib/elasticsearch/api/actions/indices/put_index_template.rb +7 -13
  166. data/lib/elasticsearch/api/actions/indices/put_mapping.rb +9 -33
  167. data/lib/elasticsearch/api/actions/indices/put_settings.rb +7 -17
  168. data/lib/elasticsearch/api/actions/indices/put_template.rb +7 -15
  169. data/lib/elasticsearch/api/actions/indices/recovery.rb +7 -12
  170. data/lib/elasticsearch/api/actions/indices/refresh.rb +7 -13
  171. data/lib/elasticsearch/api/actions/indices/{get_upgrade.rb → reload_search_analyzers.rb} +13 -26
  172. data/lib/elasticsearch/api/actions/indices/resolve_index.rb +7 -11
  173. data/lib/elasticsearch/api/actions/indices/rollover.rb +7 -16
  174. data/lib/elasticsearch/api/actions/indices/segments.rb +7 -14
  175. data/lib/elasticsearch/api/actions/indices/shard_stores.rb +7 -14
  176. data/lib/elasticsearch/api/actions/indices/shrink.rb +7 -15
  177. data/lib/elasticsearch/api/actions/indices/simulate_index_template.rb +7 -13
  178. data/lib/elasticsearch/api/actions/indices/simulate_template.rb +7 -13
  179. data/lib/elasticsearch/api/actions/indices/split.rb +7 -15
  180. data/lib/elasticsearch/api/actions/indices/stats.rb +25 -47
  181. data/lib/elasticsearch/api/actions/indices/{upgrade.rb → unfreeze.rb} +19 -28
  182. data/lib/elasticsearch/api/actions/indices/update_aliases.rb +7 -12
  183. data/lib/elasticsearch/api/actions/indices/validate_query.rb +8 -23
  184. data/lib/elasticsearch/api/actions/info.rb +6 -3
  185. data/lib/elasticsearch/api/actions/ingest/delete_pipeline.rb +7 -12
  186. data/lib/elasticsearch/api/actions/ingest/geo_ip_stats.rb +6 -3
  187. data/lib/elasticsearch/api/actions/ingest/get_pipeline.rb +7 -12
  188. data/lib/elasticsearch/api/actions/ingest/processor_grok.rb +6 -3
  189. data/lib/elasticsearch/api/actions/ingest/put_pipeline.rb +7 -14
  190. data/lib/elasticsearch/api/actions/ingest/simulate.rb +7 -11
  191. data/lib/elasticsearch/api/actions/knn_search.rb +60 -0
  192. data/lib/elasticsearch/api/actions/license/delete.rb +46 -0
  193. data/lib/elasticsearch/api/actions/license/get.rb +48 -0
  194. data/lib/elasticsearch/api/actions/license/get_basic_status.rb +46 -0
  195. data/lib/elasticsearch/api/actions/license/get_trial_status.rb +46 -0
  196. data/lib/elasticsearch/api/actions/license/post.rb +48 -0
  197. data/lib/elasticsearch/api/actions/license/post_start_basic.rb +47 -0
  198. data/lib/elasticsearch/api/actions/license/post_start_trial.rb +48 -0
  199. data/lib/elasticsearch/api/actions/logstash/delete_pipeline.rb +51 -0
  200. data/lib/elasticsearch/api/actions/logstash/get_pipeline.rb +51 -0
  201. data/lib/elasticsearch/api/actions/logstash/put_pipeline.rb +53 -0
  202. data/lib/elasticsearch/api/actions/machine_learning/close_job.rb +56 -0
  203. data/lib/elasticsearch/api/actions/machine_learning/delete_calendar.rb +51 -0
  204. data/lib/elasticsearch/api/actions/machine_learning/delete_calendar_event.rb +55 -0
  205. data/lib/elasticsearch/api/actions/machine_learning/delete_calendar_job.rb +55 -0
  206. data/lib/elasticsearch/api/actions/machine_learning/delete_data_frame_analytics.rb +53 -0
  207. data/lib/elasticsearch/api/actions/machine_learning/delete_datafeed.rb +52 -0
  208. data/lib/elasticsearch/api/actions/machine_learning/delete_expired_data.rb +56 -0
  209. data/lib/elasticsearch/api/actions/machine_learning/delete_filter.rb +51 -0
  210. data/lib/elasticsearch/api/actions/machine_learning/delete_forecast.rb +60 -0
  211. data/lib/elasticsearch/api/actions/machine_learning/delete_job.rb +53 -0
  212. data/lib/elasticsearch/api/actions/machine_learning/delete_model_snapshot.rb +55 -0
  213. data/lib/elasticsearch/api/actions/machine_learning/delete_trained_model.rb +51 -0
  214. data/lib/elasticsearch/api/actions/machine_learning/delete_trained_model_alias.rb +55 -0
  215. data/lib/elasticsearch/api/actions/machine_learning/estimate_model_memory.rb +49 -0
  216. data/lib/elasticsearch/api/actions/machine_learning/evaluate_data_frame.rb +49 -0
  217. data/lib/elasticsearch/api/actions/machine_learning/explain_data_frame_analytics.rb +59 -0
  218. data/lib/elasticsearch/api/actions/machine_learning/flush_job.rb +57 -0
  219. data/lib/elasticsearch/api/actions/machine_learning/forecast.rb +54 -0
  220. data/lib/elasticsearch/api/actions/machine_learning/get_buckets.rb +73 -0
  221. data/lib/elasticsearch/api/actions/machine_learning/get_calendar_events.rb +56 -0
  222. data/lib/elasticsearch/api/actions/machine_learning/get_calendars.rb +61 -0
  223. data/lib/elasticsearch/api/actions/machine_learning/get_categories.rb +67 -0
  224. data/lib/elasticsearch/api/actions/machine_learning/get_data_frame_analytics.rb +57 -0
  225. data/lib/elasticsearch/api/actions/machine_learning/get_data_frame_analytics_stats.rb +57 -0
  226. data/lib/elasticsearch/api/actions/machine_learning/get_datafeed_stats.rb +55 -0
  227. data/lib/elasticsearch/api/actions/machine_learning/get_datafeeds.rb +56 -0
  228. data/lib/elasticsearch/api/actions/machine_learning/get_filters.rb +55 -0
  229. data/lib/elasticsearch/api/actions/machine_learning/get_influencers.rb +65 -0
  230. data/lib/elasticsearch/api/actions/machine_learning/get_job_stats.rb +55 -0
  231. data/lib/elasticsearch/api/actions/machine_learning/get_jobs.rb +56 -0
  232. data/lib/elasticsearch/api/actions/machine_learning/get_model_snapshots.rb +70 -0
  233. data/lib/elasticsearch/api/actions/machine_learning/get_overall_buckets.rb +65 -0
  234. data/lib/elasticsearch/api/actions/machine_learning/get_records.rb +65 -0
  235. data/lib/elasticsearch/api/actions/machine_learning/get_trained_model_deployment_stats.rb +51 -0
  236. data/lib/elasticsearch/api/actions/machine_learning/get_trained_models.rb +61 -0
  237. data/lib/elasticsearch/api/actions/machine_learning/get_trained_models_stats.rb +56 -0
  238. data/lib/elasticsearch/api/actions/machine_learning/infer_trained_model_deployment.rb +58 -0
  239. data/lib/elasticsearch/api/actions/machine_learning/info.rb +46 -0
  240. data/lib/elasticsearch/api/actions/machine_learning/open_job.rb +51 -0
  241. data/lib/elasticsearch/api/actions/machine_learning/post_calendar_events.rb +53 -0
  242. data/lib/elasticsearch/api/actions/machine_learning/post_data.rb +55 -0
  243. data/lib/elasticsearch/api/actions/machine_learning/preview_data_frame_analytics.rb +59 -0
  244. data/lib/elasticsearch/api/actions/machine_learning/preview_datafeed.rb +59 -0
  245. data/lib/elasticsearch/api/actions/machine_learning/put_calendar.rb +52 -0
  246. data/lib/elasticsearch/api/actions/machine_learning/put_calendar_job.rb +55 -0
  247. data/lib/elasticsearch/api/actions/machine_learning/put_data_frame_analytics.rb +53 -0
  248. data/lib/elasticsearch/api/actions/machine_learning/put_datafeed.rb +57 -0
  249. data/lib/elasticsearch/api/actions/machine_learning/put_filter.rb +53 -0
  250. data/lib/elasticsearch/api/actions/machine_learning/put_job.rb +57 -0
  251. data/lib/elasticsearch/api/actions/machine_learning/put_trained_model.rb +54 -0
  252. data/lib/elasticsearch/api/actions/machine_learning/put_trained_model_alias.rb +56 -0
  253. data/lib/elasticsearch/api/actions/machine_learning/put_trained_model_definition_part.rb +61 -0
  254. data/lib/elasticsearch/api/actions/machine_learning/put_trained_model_vocabulary.rb +57 -0
  255. data/lib/elasticsearch/api/actions/machine_learning/reset_job.rb +52 -0
  256. data/lib/elasticsearch/api/actions/machine_learning/revert_model_snapshot.rb +57 -0
  257. data/lib/elasticsearch/api/actions/machine_learning/set_upgrade_mode.rb +48 -0
  258. data/lib/elasticsearch/api/actions/machine_learning/start_data_frame_analytics.rb +53 -0
  259. data/lib/elasticsearch/api/actions/machine_learning/start_datafeed.rb +55 -0
  260. data/lib/elasticsearch/api/actions/machine_learning/start_trained_model_deployment.rb +57 -0
  261. data/lib/elasticsearch/api/actions/machine_learning/stop_data_frame_analytics.rb +55 -0
  262. data/lib/elasticsearch/api/actions/machine_learning/stop_datafeed.rb +56 -0
  263. data/lib/elasticsearch/api/actions/machine_learning/stop_trained_model_deployment.rb +55 -0
  264. data/lib/elasticsearch/api/actions/machine_learning/update_data_frame_analytics.rb +53 -0
  265. data/lib/elasticsearch/api/actions/machine_learning/update_datafeed.rb +57 -0
  266. data/lib/elasticsearch/api/actions/machine_learning/update_filter.rb +53 -0
  267. data/lib/elasticsearch/api/actions/machine_learning/update_job.rb +53 -0
  268. data/lib/elasticsearch/api/actions/machine_learning/update_model_snapshot.rb +57 -0
  269. data/lib/elasticsearch/api/actions/machine_learning/upgrade_job_snapshot.rb +57 -0
  270. data/lib/elasticsearch/api/actions/machine_learning/validate.rb +49 -0
  271. data/lib/elasticsearch/api/actions/machine_learning/validate_detector.rb +49 -0
  272. data/lib/elasticsearch/api/actions/mget.rb +9 -30
  273. data/lib/elasticsearch/api/actions/migration/deprecations.rb +53 -0
  274. data/lib/elasticsearch/api/actions/migration/get_feature_upgrade_status.rb +46 -0
  275. data/lib/elasticsearch/api/actions/migration/post_feature_upgrade.rb +46 -0
  276. data/lib/elasticsearch/api/actions/monitoring/bulk.rb +72 -0
  277. data/lib/elasticsearch/api/actions/msearch.rb +9 -29
  278. data/lib/elasticsearch/api/actions/msearch_template.rb +9 -27
  279. data/lib/elasticsearch/api/actions/mtermvectors.rb +14 -40
  280. data/lib/elasticsearch/api/actions/nodes/clear_repositories_metering_archive.rb +9 -4
  281. data/lib/elasticsearch/api/actions/nodes/get_repositories_metering_info.rb +6 -3
  282. data/lib/elasticsearch/api/actions/nodes/hot_threads.rb +10 -26
  283. data/lib/elasticsearch/api/actions/nodes/info.rb +8 -13
  284. data/lib/elasticsearch/api/actions/nodes/reload_secure_settings.rb +7 -11
  285. data/lib/elasticsearch/api/actions/nodes/stats.rb +10 -22
  286. data/lib/elasticsearch/api/actions/nodes/usage.rb +7 -11
  287. data/lib/elasticsearch/api/actions/open_point_in_time.rb +8 -16
  288. data/lib/elasticsearch/api/actions/ping.rb +3 -2
  289. data/lib/elasticsearch/api/actions/put_script.rb +7 -13
  290. data/lib/elasticsearch/api/actions/rank_eval.rb +7 -14
  291. data/lib/elasticsearch/api/actions/reindex.rb +7 -18
  292. data/lib/elasticsearch/api/actions/reindex_rethrottle.rb +7 -11
  293. data/lib/elasticsearch/api/actions/render_search_template.rb +7 -4
  294. data/lib/elasticsearch/api/actions/rollup/delete_job.rb +55 -0
  295. data/lib/elasticsearch/api/actions/rollup/get_jobs.rb +57 -0
  296. data/lib/elasticsearch/api/actions/rollup/get_rollup_caps.rb +57 -0
  297. data/lib/elasticsearch/api/actions/rollup/get_rollup_index_caps.rb +55 -0
  298. data/lib/elasticsearch/api/actions/rollup/put_job.rb +57 -0
  299. data/lib/elasticsearch/api/actions/rollup/rollup.rb +61 -0
  300. data/lib/elasticsearch/api/actions/rollup/rollup_search.rb +71 -0
  301. data/lib/elasticsearch/api/actions/rollup/start_job.rb +55 -0
  302. data/lib/elasticsearch/api/actions/rollup/stop_job.rb +57 -0
  303. data/lib/elasticsearch/api/actions/scripts_painless_execute.rb +7 -4
  304. data/lib/elasticsearch/api/actions/scroll.rb +8 -14
  305. data/lib/elasticsearch/api/actions/search.rb +10 -66
  306. data/lib/elasticsearch/api/actions/search_mvt.rb +8 -17
  307. data/lib/elasticsearch/api/actions/search_shards.rb +7 -16
  308. data/lib/elasticsearch/api/actions/search_template.rb +8 -34
  309. data/lib/elasticsearch/api/actions/searchable_snapshots/cache_stats.rb +57 -0
  310. data/lib/elasticsearch/api/actions/{indices/flush_synced.rb → searchable_snapshots/clear_cache.rb} +17 -28
  311. data/lib/elasticsearch/api/actions/searchable_snapshots/mount.rb +60 -0
  312. data/lib/elasticsearch/api/actions/searchable_snapshots/stats.rb +54 -0
  313. data/lib/elasticsearch/api/actions/security/authenticate.rb +46 -0
  314. data/lib/elasticsearch/api/actions/security/change_password.rb +57 -0
  315. data/lib/elasticsearch/api/actions/security/clear_api_key_cache.rb +51 -0
  316. data/lib/elasticsearch/api/actions/security/clear_cached_privileges.rb +51 -0
  317. data/lib/elasticsearch/api/actions/security/clear_cached_realms.rb +52 -0
  318. data/lib/elasticsearch/api/actions/security/clear_cached_roles.rb +51 -0
  319. data/lib/elasticsearch/api/actions/security/clear_cached_service_tokens.rb +59 -0
  320. data/lib/elasticsearch/api/actions/security/create_api_key.rb +50 -0
  321. data/lib/elasticsearch/api/actions/security/create_service_token.rb +63 -0
  322. data/lib/elasticsearch/api/actions/security/delete_privileges.rb +56 -0
  323. data/lib/elasticsearch/api/actions/security/delete_role.rb +52 -0
  324. data/lib/elasticsearch/api/actions/security/delete_role_mapping.rb +52 -0
  325. data/lib/elasticsearch/api/actions/security/delete_service_token.rb +60 -0
  326. data/lib/elasticsearch/api/actions/security/delete_user.rb +52 -0
  327. data/lib/elasticsearch/api/actions/security/disable_user.rb +52 -0
  328. data/lib/elasticsearch/api/actions/security/enable_user.rb +52 -0
  329. data/lib/elasticsearch/api/actions/security/enroll_kibana.rb +46 -0
  330. data/lib/elasticsearch/api/actions/security/enroll_node.rb +46 -0
  331. data/lib/elasticsearch/api/actions/security/get_api_key.rb +51 -0
  332. data/lib/elasticsearch/api/actions/security/get_builtin_privileges.rb +46 -0
  333. data/lib/elasticsearch/api/actions/security/get_privileges.rb +58 -0
  334. data/lib/elasticsearch/api/actions/security/get_role.rb +61 -0
  335. data/lib/elasticsearch/api/actions/security/get_role_mapping.rb +53 -0
  336. data/lib/elasticsearch/api/actions/security/get_service_accounts.rb +58 -0
  337. data/lib/elasticsearch/api/actions/security/get_service_credentials.rb +55 -0
  338. data/lib/elasticsearch/api/actions/security/get_token.rb +49 -0
  339. data/lib/elasticsearch/api/actions/security/get_user.rb +61 -0
  340. data/lib/elasticsearch/api/actions/security/get_user_privileges.rb +46 -0
  341. data/lib/elasticsearch/api/actions/security/grant_api_key.rb +50 -0
  342. data/lib/elasticsearch/api/actions/security/has_privileges.rb +56 -0
  343. data/lib/elasticsearch/api/actions/security/invalidate_api_key.rb +49 -0
  344. data/lib/elasticsearch/api/actions/security/invalidate_token.rb +49 -0
  345. data/lib/elasticsearch/api/actions/security/put_privileges.rb +50 -0
  346. data/lib/elasticsearch/api/actions/security/put_role.rb +54 -0
  347. data/lib/elasticsearch/api/actions/security/put_role_mapping.rb +54 -0
  348. data/lib/elasticsearch/api/actions/security/put_user.rb +54 -0
  349. data/lib/elasticsearch/api/actions/security/query_api_keys.rb +52 -0
  350. data/lib/elasticsearch/api/actions/security/saml_authenticate.rb +49 -0
  351. data/lib/elasticsearch/api/actions/security/saml_complete_logout.rb +49 -0
  352. data/lib/elasticsearch/api/actions/security/saml_invalidate.rb +49 -0
  353. data/lib/elasticsearch/api/actions/security/saml_logout.rb +49 -0
  354. data/lib/elasticsearch/api/actions/security/saml_prepare_authentication.rb +49 -0
  355. data/lib/elasticsearch/api/actions/security/saml_service_provider_metadata.rb +51 -0
  356. data/lib/elasticsearch/api/actions/shutdown/delete_node.rb +5 -2
  357. data/lib/elasticsearch/api/actions/shutdown/get_node.rb +5 -2
  358. data/lib/elasticsearch/api/actions/shutdown/put_node.rb +5 -2
  359. data/lib/elasticsearch/api/actions/snapshot/cleanup_repository.rb +7 -12
  360. data/lib/elasticsearch/api/actions/snapshot/clone.rb +7 -11
  361. data/lib/elasticsearch/api/actions/snapshot/create.rb +7 -12
  362. data/lib/elasticsearch/api/actions/snapshot/create_repository.rb +7 -13
  363. data/lib/elasticsearch/api/actions/snapshot/delete.rb +14 -14
  364. data/lib/elasticsearch/api/actions/snapshot/delete_repository.rb +12 -13
  365. data/lib/elasticsearch/api/actions/snapshot/get.rb +12 -16
  366. data/lib/elasticsearch/api/actions/snapshot/get_repository.rb +12 -13
  367. data/lib/elasticsearch/api/actions/snapshot/repository_analyze.rb +7 -21
  368. data/lib/elasticsearch/api/actions/snapshot/restore.rb +7 -12
  369. data/lib/elasticsearch/api/actions/snapshot/status.rb +12 -13
  370. data/lib/elasticsearch/api/actions/snapshot/verify_repository.rb +7 -12
  371. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/delete_lifecycle.rb +51 -0
  372. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/execute_lifecycle.rb +51 -0
  373. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/execute_retention.rb +46 -0
  374. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/get_lifecycle.rb +53 -0
  375. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/get_stats.rb +46 -0
  376. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/get_status.rb +46 -0
  377. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/put_lifecycle.rb +52 -0
  378. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/start.rb +46 -0
  379. data/lib/elasticsearch/api/actions/snapshot_lifecycle_management/stop.rb +46 -0
  380. data/lib/elasticsearch/api/actions/sql/clear_cursor.rb +49 -0
  381. data/lib/elasticsearch/api/actions/sql/delete_async.rb +51 -0
  382. data/lib/elasticsearch/api/actions/sql/get_async.rb +55 -0
  383. data/lib/elasticsearch/api/actions/sql/get_async_status.rb +51 -0
  384. data/lib/elasticsearch/api/actions/sql/query.rb +50 -0
  385. data/lib/elasticsearch/api/actions/sql/translate.rb +49 -0
  386. data/lib/elasticsearch/api/actions/ssl/certificates.rb +46 -0
  387. data/lib/elasticsearch/api/actions/tasks/cancel.rb +7 -14
  388. data/lib/elasticsearch/api/actions/tasks/get.rb +7 -12
  389. data/lib/elasticsearch/api/actions/tasks/list.rb +7 -17
  390. data/lib/elasticsearch/api/actions/terms_enum.rb +55 -0
  391. data/lib/elasticsearch/api/actions/termvectors.rb +13 -40
  392. data/lib/elasticsearch/api/actions/text_structure/find_structure.rb +70 -0
  393. data/lib/elasticsearch/api/actions/transform/delete_transform.rb +52 -0
  394. data/lib/elasticsearch/api/actions/transform/get_transform.rb +57 -0
  395. data/lib/elasticsearch/api/actions/transform/get_transform_stats.rb +54 -0
  396. data/lib/elasticsearch/api/actions/transform/preview_transform.rb +59 -0
  397. data/lib/elasticsearch/api/actions/transform/put_transform.rb +54 -0
  398. data/lib/elasticsearch/api/actions/transform/start_transform.rb +52 -0
  399. data/lib/elasticsearch/api/actions/transform/stop_transform.rb +56 -0
  400. data/lib/elasticsearch/api/actions/transform/update_transform.rb +54 -0
  401. data/lib/elasticsearch/api/actions/transform/upgrade_transforms.rb +47 -0
  402. data/lib/elasticsearch/api/actions/update.rb +12 -23
  403. data/lib/elasticsearch/api/actions/update_by_query.rb +12 -57
  404. data/lib/elasticsearch/api/actions/update_by_query_rethrottle.rb +7 -11
  405. data/lib/elasticsearch/api/actions/watcher/ack_watch.rb +58 -0
  406. data/lib/elasticsearch/api/actions/watcher/activate_watch.rb +51 -0
  407. data/lib/elasticsearch/api/actions/watcher/deactivate_watch.rb +51 -0
  408. data/lib/elasticsearch/api/actions/watcher/delete_watch.rb +59 -0
  409. data/lib/elasticsearch/api/actions/watcher/execute_watch.rb +55 -0
  410. data/lib/elasticsearch/api/actions/watcher/get_watch.rb +51 -0
  411. data/lib/elasticsearch/api/actions/watcher/put_watch.rb +56 -0
  412. data/lib/elasticsearch/api/actions/watcher/query_watches.rb +52 -0
  413. data/lib/elasticsearch/api/actions/watcher/start.rb +46 -0
  414. data/lib/elasticsearch/api/actions/watcher/stats.rb +54 -0
  415. data/lib/elasticsearch/api/actions/watcher/stop.rb +46 -0
  416. data/lib/elasticsearch/api/actions/xpack/info.rb +48 -0
  417. data/lib/elasticsearch/api/actions/xpack/usage.rb +47 -0
  418. data/lib/elasticsearch/api/namespace/async_search.rb +36 -0
  419. data/lib/elasticsearch/api/namespace/autoscaling.rb +36 -0
  420. data/lib/elasticsearch/api/namespace/cross_cluster_replication.rb +38 -0
  421. data/lib/elasticsearch/api/namespace/data_frame_transform_deprecated.rb +36 -0
  422. data/lib/elasticsearch/api/namespace/enrich.rb +36 -0
  423. data/lib/elasticsearch/api/namespace/eql.rb +36 -0
  424. data/lib/elasticsearch/api/namespace/fleet.rb +36 -0
  425. data/lib/elasticsearch/api/namespace/graph.rb +36 -0
  426. data/lib/elasticsearch/api/namespace/index_lifecycle_management.rb +38 -0
  427. data/lib/elasticsearch/api/namespace/ingest.rb +0 -1
  428. data/lib/elasticsearch/api/namespace/license.rb +36 -0
  429. data/lib/elasticsearch/api/namespace/logstash.rb +36 -0
  430. data/lib/elasticsearch/api/namespace/machine_learning.rb +38 -0
  431. data/lib/elasticsearch/api/namespace/migration.rb +36 -0
  432. data/lib/elasticsearch/api/namespace/monitoring.rb +36 -0
  433. data/lib/elasticsearch/api/namespace/rollup.rb +36 -0
  434. data/lib/elasticsearch/api/namespace/searchable_snapshots.rb +36 -0
  435. data/lib/elasticsearch/api/namespace/snapshot_lifecycle_management.rb +38 -0
  436. data/lib/elasticsearch/api/namespace/sql.rb +36 -0
  437. data/lib/elasticsearch/api/namespace/ssl.rb +36 -0
  438. data/lib/elasticsearch/api/namespace/text_structure.rb +36 -0
  439. data/lib/elasticsearch/api/namespace/transform.rb +36 -0
  440. data/lib/elasticsearch/api/namespace/watcher.rb +36 -0
  441. data/lib/elasticsearch/api/namespace/xpack.rb +36 -0
  442. data/lib/elasticsearch/api/response.rb +48 -0
  443. data/lib/elasticsearch/api/utils.rb +7 -60
  444. data/lib/elasticsearch/api/version.rb +1 -1
  445. data/lib/elasticsearch/api.rb +26 -21
  446. data/spec/elasticsearch/api/actions/bulk_spec.rb +8 -8
  447. data/spec/elasticsearch/api/actions/cat/aliases_spec.rb +1 -1
  448. data/spec/elasticsearch/api/actions/cat/allocation_spec.rb +1 -1
  449. data/spec/elasticsearch/api/actions/cat/count_spec.rb +1 -1
  450. data/spec/elasticsearch/api/actions/cat/fielddata_spec.rb +2 -2
  451. data/spec/elasticsearch/api/actions/cat/health_spec.rb +1 -1
  452. data/spec/elasticsearch/api/actions/cat/help_spec.rb +1 -1
  453. data/spec/elasticsearch/api/actions/cat/indices_spec.rb +1 -1
  454. data/spec/elasticsearch/api/actions/cat/master_spec.rb +1 -1
  455. data/spec/elasticsearch/api/actions/cat/nodeattrs_spec.rb +1 -1
  456. data/spec/elasticsearch/api/actions/cat/nodes_spec.rb +1 -1
  457. data/spec/elasticsearch/api/actions/cat/pending_tasks_spec.rb +1 -1
  458. data/spec/elasticsearch/api/actions/cat/plugins_spec.rb +1 -1
  459. data/spec/elasticsearch/api/actions/cat/recovery_spec.rb +1 -1
  460. data/spec/elasticsearch/api/actions/cat/repositories_spec.rb +1 -1
  461. data/spec/elasticsearch/api/actions/cat/segments_spec.rb +2 -2
  462. data/spec/elasticsearch/api/actions/cat/shards_spec.rb +1 -1
  463. data/spec/elasticsearch/api/actions/cat/snapshot_spec.rb +1 -1
  464. data/spec/elasticsearch/api/actions/cat/tasks_spec.rb +1 -1
  465. data/spec/elasticsearch/api/actions/cat/templates_spec.rb +1 -1
  466. data/spec/elasticsearch/api/actions/cat/thread_pool_spec.rb +1 -1
  467. data/spec/elasticsearch/api/actions/clear_scroll_spec.rb +2 -2
  468. data/spec/elasticsearch/api/actions/close_point_in_time_spec.rb +1 -1
  469. data/spec/elasticsearch/api/actions/cluster/allocation_explain_spec.rb +1 -1
  470. data/spec/elasticsearch/api/actions/cluster/get_settings_spec.rb +1 -1
  471. data/spec/elasticsearch/api/actions/cluster/health_spec.rb +3 -3
  472. data/spec/elasticsearch/api/actions/cluster/pending_tasks_spec.rb +1 -1
  473. data/spec/elasticsearch/api/actions/cluster/put_settings_spec.rb +1 -1
  474. data/spec/elasticsearch/api/actions/cluster/remote_info_spec.rb +1 -1
  475. data/spec/elasticsearch/api/actions/cluster/reroute_spec.rb +2 -2
  476. data/spec/elasticsearch/api/actions/cluster/state_spec.rb +2 -2
  477. data/spec/elasticsearch/api/actions/cluster/stats_spec.rb +1 -1
  478. data/spec/elasticsearch/api/actions/count_spec.rb +9 -6
  479. data/spec/elasticsearch/api/actions/create_document_spec.rb +8 -8
  480. data/spec/elasticsearch/api/actions/dangling_indices/delete_dangling_indices_spec.rb +1 -1
  481. data/spec/elasticsearch/api/actions/dangling_indices/import_dangling_indices_spec.rb +1 -1
  482. data/spec/elasticsearch/api/actions/dangling_indices/list_dangling_indices_spec.rb +1 -1
  483. data/spec/elasticsearch/api/actions/data_frame/update_data_frame_transform_spec.rb +81 -0
  484. data/spec/elasticsearch/api/actions/delete_by_query_spec.rb +2 -19
  485. data/spec/elasticsearch/api/actions/delete_document_spec.rb +3 -16
  486. data/spec/elasticsearch/api/actions/delete_script_spec.rb +1 -1
  487. data/spec/elasticsearch/api/actions/exists_document_spec.rb +10 -21
  488. data/spec/elasticsearch/api/actions/explain_document_spec.rb +9 -9
  489. data/spec/elasticsearch/api/actions/features/get_features_spec.rb +11 -7
  490. data/spec/elasticsearch/api/actions/features/reset_features_spec.rb +11 -7
  491. data/spec/elasticsearch/api/actions/field_caps_spec.rb +1 -1
  492. data/spec/elasticsearch/api/actions/fleet/global_checkpoints_spec.rb +44 -0
  493. data/spec/elasticsearch/api/actions/get_document_source_spec.rb +6 -18
  494. data/spec/elasticsearch/api/actions/get_document_spec.rb +6 -31
  495. data/spec/elasticsearch/api/actions/get_script_spec.rb +1 -1
  496. data/spec/elasticsearch/api/actions/index_document_spec.rb +10 -28
  497. data/spec/elasticsearch/api/actions/index_lifecycle_management/migrate_to_data_tiers_spec.rb +36 -0
  498. data/spec/elasticsearch/api/actions/indices/add_block_spec.rb +1 -1
  499. data/spec/elasticsearch/api/actions/indices/analyze_spec.rb +3 -3
  500. data/spec/elasticsearch/api/actions/indices/clear_cache_spec.rb +4 -4
  501. data/spec/elasticsearch/api/actions/indices/clone_spec.rb +6 -6
  502. data/spec/elasticsearch/api/actions/indices/close_spec.rb +3 -3
  503. data/spec/elasticsearch/api/actions/indices/create_spec.rb +3 -3
  504. data/spec/elasticsearch/api/actions/indices/data_streams_stats_spec.rb +58 -0
  505. data/spec/elasticsearch/api/actions/indices/delete_alias_spec.rb +2 -2
  506. data/spec/elasticsearch/api/actions/indices/delete_spec.rb +4 -4
  507. data/spec/elasticsearch/api/actions/indices/delete_template_spec.rb +2 -2
  508. data/spec/elasticsearch/api/actions/indices/disk_usage_spec.rb +1 -1
  509. data/spec/elasticsearch/api/actions/indices/field_usage_stats_spec.rb +1 -1
  510. data/spec/elasticsearch/api/actions/indices/flush_spec.rb +5 -5
  511. data/spec/elasticsearch/api/actions/indices/forcemerge_spec.rb +1 -1
  512. data/spec/elasticsearch/api/actions/indices/get_alias_spec.rb +3 -3
  513. data/spec/elasticsearch/api/actions/indices/get_field_mapping_spec.rb +2 -13
  514. data/spec/elasticsearch/api/actions/indices/get_mapping_spec.rb +7 -22
  515. data/spec/elasticsearch/api/actions/indices/get_settings_spec.rb +4 -4
  516. data/spec/elasticsearch/api/actions/indices/get_spec.rb +2 -2
  517. data/spec/elasticsearch/api/actions/indices/open_spec.rb +3 -3
  518. data/spec/elasticsearch/api/actions/indices/put_alias_spec.rb +4 -4
  519. data/spec/elasticsearch/api/actions/indices/put_mapping_spec.rb +8 -14
  520. data/spec/elasticsearch/api/actions/indices/put_settings_spec.rb +5 -5
  521. data/spec/elasticsearch/api/actions/indices/put_template_spec.rb +3 -3
  522. data/spec/elasticsearch/api/actions/indices/recovery_spec.rb +1 -1
  523. data/spec/elasticsearch/api/actions/indices/refresh_spec.rb +5 -5
  524. data/spec/elasticsearch/api/actions/indices/rollover_spec.rb +2 -2
  525. data/spec/elasticsearch/api/actions/indices/segments_spec.rb +5 -5
  526. data/spec/elasticsearch/api/actions/indices/shard_stores_spec.rb +1 -1
  527. data/spec/elasticsearch/api/actions/indices/shrink_spec.rb +1 -1
  528. data/spec/elasticsearch/api/actions/indices/split_spec.rb +1 -1
  529. data/spec/elasticsearch/api/actions/indices/stats_spec.rb +7 -12
  530. data/spec/elasticsearch/api/actions/indices/unfreeze_spec.rb +85 -0
  531. data/spec/elasticsearch/api/actions/indices/update_aliases_spec.rb +2 -2
  532. data/spec/elasticsearch/api/actions/indices/validate_query_spec.rb +8 -8
  533. data/spec/elasticsearch/api/actions/info_spec.rb +1 -1
  534. data/spec/elasticsearch/api/actions/ingest/delete_pipeline_spec.rb +2 -2
  535. data/spec/elasticsearch/api/actions/ingest/geo_ip_stats_spec.rb +5 -1
  536. data/spec/elasticsearch/api/actions/ingest/get_pipeline_spec.rb +2 -2
  537. data/spec/elasticsearch/api/actions/ingest/put_pipeline_spec.rb +2 -2
  538. data/spec/elasticsearch/api/actions/ingest/simulate_spec.rb +2 -2
  539. data/spec/elasticsearch/api/actions/json_builders_spec.rb +2 -2
  540. data/spec/elasticsearch/api/actions/machine_learning/get_trained_model_deployment_stats_spec.rb +46 -0
  541. data/spec/elasticsearch/api/actions/machine_learning/infer_trained_model_deployment_spec.rb +46 -0
  542. data/spec/elasticsearch/api/actions/machine_learning/put_trained_model_definition_part_spec.rb +62 -0
  543. data/spec/elasticsearch/api/actions/machine_learning/put_trained_model_vocabulary_spec.rb +54 -0
  544. data/spec/elasticsearch/api/actions/machine_learning/reset_job_spec.rb +46 -0
  545. data/spec/elasticsearch/api/actions/machine_learning/set_upgrade_mode_spec.rb +51 -0
  546. data/spec/elasticsearch/api/actions/machine_learning/start_trained_model_deployment_spec.rb +46 -0
  547. data/spec/elasticsearch/api/actions/machine_learning/stop_trained_model_deployment_spec.rb +46 -0
  548. data/spec/elasticsearch/api/actions/mget_spec.rb +5 -20
  549. data/spec/elasticsearch/api/actions/migration/get_feature_upgrade_status_spec.rb +34 -0
  550. data/spec/elasticsearch/api/actions/migration/post_feature_upgrade_spec.rb +34 -0
  551. data/spec/elasticsearch/api/actions/msearch_spec.rb +16 -14
  552. data/spec/elasticsearch/api/actions/msearch_template_spec.rb +2 -2
  553. data/spec/elasticsearch/api/actions/mtermvectors_spec.rb +4 -6
  554. data/spec/elasticsearch/api/actions/nodes/clear_repositories_metering_archive_spec.rb +2 -2
  555. data/spec/elasticsearch/api/actions/nodes/get_repositories_metering_info_spec.rb +2 -2
  556. data/spec/elasticsearch/api/actions/nodes/hot_threads_spec.rb +6 -6
  557. data/spec/elasticsearch/api/actions/nodes/info_spec.rb +6 -6
  558. data/spec/elasticsearch/api/actions/nodes/reload_secure_settings_spec.rb +5 -5
  559. data/spec/elasticsearch/api/actions/nodes/stats_spec.rb +4 -4
  560. data/spec/elasticsearch/api/actions/open_point_in_time_spec.rb +1 -1
  561. data/spec/elasticsearch/api/actions/put_script_spec.rb +2 -2
  562. data/spec/elasticsearch/api/actions/rank_eval_spec.rb +127 -0
  563. data/spec/elasticsearch/api/actions/reindex_spec.rb +1 -1
  564. data/spec/elasticsearch/api/actions/render_search_template_spec.rb +2 -2
  565. data/spec/elasticsearch/api/actions/scroll_spec.rb +2 -2
  566. data/spec/elasticsearch/api/actions/search_mvt_spec.rb +3 -2
  567. data/spec/elasticsearch/api/actions/search_shards_spec.rb +1 -1
  568. data/spec/elasticsearch/api/actions/search_spec.rb +2 -40
  569. data/spec/elasticsearch/api/actions/search_template_spec.rb +1 -1
  570. data/spec/elasticsearch/api/actions/searchable_snapshots/cache_stats_spec.rb +44 -0
  571. data/spec/elasticsearch/api/actions/searchable_snapshots/clear_cache_spec.rb +44 -0
  572. data/spec/elasticsearch/api/actions/searchable_snapshots/mount_spec.rb +56 -0
  573. data/spec/elasticsearch/api/actions/searchable_snapshots/stats_spec.rb +43 -0
  574. data/spec/elasticsearch/api/actions/security/clear_cached_service_tokens_spec.rb +58 -0
  575. data/spec/elasticsearch/api/actions/security/create_api_key_spec.rb +79 -0
  576. data/spec/elasticsearch/api/actions/security/create_service_token_spec.rb +54 -0
  577. data/spec/elasticsearch/api/actions/security/delete_service_token_spec.rb +60 -0
  578. data/spec/elasticsearch/api/actions/security/enroll_kibana_spec.rb +34 -0
  579. data/spec/elasticsearch/api/actions/security/get_api_key_spec.rb +56 -0
  580. data/spec/elasticsearch/api/actions/{indices/upgrade_spec.rb → security/get_builtin_privileges_spec.rb} +4 -4
  581. data/spec/elasticsearch/api/actions/security/get_service_accounts_spec.rb +58 -0
  582. data/spec/elasticsearch/api/actions/security/get_service_credentials_spec.rb +53 -0
  583. data/spec/elasticsearch/api/actions/security/invalidate_api_key_spec.rb +38 -0
  584. data/spec/elasticsearch/api/actions/security/query_api_keys_spec.rb +48 -0
  585. data/spec/elasticsearch/api/actions/security/saml_authenticate_spec.rb +44 -0
  586. data/spec/elasticsearch/api/actions/security/saml_complete_logout_spec.rb +44 -0
  587. data/spec/elasticsearch/api/actions/security/saml_invalidate_spec.rb +44 -0
  588. data/spec/elasticsearch/api/actions/security/saml_logout_spec.rb +44 -0
  589. data/spec/elasticsearch/api/actions/security/saml_prepare_authentication_spec.rb +44 -0
  590. data/spec/elasticsearch/api/actions/security/saml_service_provider_metadata_spec.rb +46 -0
  591. data/spec/elasticsearch/api/actions/shutdown/delete_node_spec.rb +1 -1
  592. data/spec/elasticsearch/api/actions/shutdown/get_node_spec.rb +2 -2
  593. data/spec/elasticsearch/api/actions/shutdown/put_node_spec.rb +1 -1
  594. data/spec/elasticsearch/api/actions/snapshot/clone_spec.rb +1 -1
  595. data/spec/elasticsearch/api/actions/snapshot/create_repository_spec.rb +1 -1
  596. data/spec/elasticsearch/api/actions/snapshot/create_spec.rb +1 -1
  597. data/spec/elasticsearch/api/actions/snapshot/delete_repository_spec.rb +2 -2
  598. data/spec/elasticsearch/api/actions/snapshot/delete_spec.rb +1 -1
  599. data/spec/elasticsearch/api/actions/snapshot/get_repository_spec.rb +1 -1
  600. data/spec/elasticsearch/api/actions/snapshot/get_spec.rb +1 -1
  601. data/spec/elasticsearch/api/actions/snapshot/repository_analize_spec.rb +2 -4
  602. data/spec/elasticsearch/api/actions/snapshot/restore_spec.rb +7 -10
  603. data/spec/elasticsearch/api/actions/snapshot/status_spec.rb +2 -3
  604. data/spec/elasticsearch/api/actions/snapshot/verify_repository_spec.rb +6 -7
  605. data/spec/elasticsearch/api/actions/sql/delete_async_spec.rb +46 -0
  606. data/spec/elasticsearch/api/actions/sql/get_async_spec.rb +46 -0
  607. data/spec/elasticsearch/api/actions/sql/get_async_stats_spec.rb +46 -0
  608. data/spec/elasticsearch/api/actions/tasks/cancel_spec.rb +7 -8
  609. data/spec/elasticsearch/api/actions/tasks/get_spec.rb +1 -1
  610. data/spec/elasticsearch/api/actions/tasks/list_spec.rb +6 -7
  611. data/spec/elasticsearch/api/actions/terms_enum_spec.rb +52 -0
  612. data/spec/elasticsearch/api/actions/termvectors_spec.rb +5 -5
  613. data/spec/elasticsearch/api/actions/update_by_query_spec.rb +6 -7
  614. data/spec/elasticsearch/api/actions/update_document_spec.rb +6 -20
  615. data/spec/elasticsearch/api/api_response_spec.rb +64 -0
  616. data/spec/elasticsearch/api/api_spec.rb +0 -3
  617. data/spec/elasticsearch/api/client_spec.rb +0 -4
  618. data/spec/elasticsearch/api/rest_api_yaml_spec.rb +78 -83
  619. data/spec/elasticsearch/api/utils_spec.rb +26 -77
  620. data/spec/rest_api_tests_helper.rb +91 -0
  621. data/spec/{skipped_tests.yml → skipped_tests_free.yml} +4 -9
  622. data/spec/skipped_tests_platinum.yml +59 -0
  623. data/spec/spec_helper.rb +9 -18
  624. data/spec/unit_tests_platinum/test_helper.rb +72 -0
  625. data/spec/unit_tests_platinum/unit/async_search/delete_test.rb +39 -0
  626. data/spec/unit_tests_platinum/unit/async_search/get_test.rb +39 -0
  627. data/spec/unit_tests_platinum/unit/async_search/status_test.rb +39 -0
  628. data/spec/unit_tests_platinum/unit/async_search/submit_test.rb +50 -0
  629. data/spec/unit_tests_platinum/unit/autoscaling/delete_autoscaling_policy_test.rb +46 -0
  630. data/spec/unit_tests_platinum/unit/autoscaling/get_autoscaling_capacity_test.rb +40 -0
  631. data/spec/unit_tests_platinum/unit/autoscaling/get_autoscaling_policy_test.rb +46 -0
  632. data/spec/unit_tests_platinum/unit/autoscaling/put_autoscaling_policy_test.rb +52 -0
  633. data/spec/unit_tests_platinum/unit/enrich/delete_policy_test.rb +43 -0
  634. data/spec/unit_tests_platinum/unit/eql/delete_test.rb +46 -0
  635. data/spec/unit_tests_platinum/unit/eql/get_status_test.rb +46 -0
  636. data/spec/unit_tests_platinum/unit/eql/get_test.rb +46 -0
  637. data/spec/unit_tests_platinum/unit/eql/search_test.rb +52 -0
  638. data/spec/unit_tests_platinum/unit/graph/explore_test.rb +43 -0
  639. data/spec/unit_tests_platinum/unit/index_lifecycle_management/explain_test.rb +43 -0
  640. data/spec/unit_tests_platinum/unit/index_lifecycle_management/get_status_test.rb +43 -0
  641. data/spec/unit_tests_platinum/unit/index_lifecycle_management/move_to_step.rb +43 -0
  642. data/spec/unit_tests_platinum/unit/index_lifecycle_management/remove_policy_test.rb +43 -0
  643. data/spec/unit_tests_platinum/unit/index_lifecycle_management/retry_policy_test.rb +43 -0
  644. data/spec/unit_tests_platinum/unit/index_lifecycle_management/start_test.rb +43 -0
  645. data/spec/unit_tests_platinum/unit/index_lifecycle_management/stop_test.rb +43 -0
  646. data/spec/unit_tests_platinum/unit/indices/create_data_stream_test.rb +46 -0
  647. data/spec/unit_tests_platinum/unit/indices/data_stream_stats_test.rb +54 -0
  648. data/spec/unit_tests_platinum/unit/indices/delete_data_stream_test.rb +46 -0
  649. data/spec/unit_tests_platinum/unit/indices/get_data_stream_test.rb +50 -0
  650. data/spec/unit_tests_platinum/unit/indices/migrate_to_data_stream_test.rb +46 -0
  651. data/spec/unit_tests_platinum/unit/indices/modify_data_stream_test.rb +46 -0
  652. data/spec/unit_tests_platinum/unit/indices/promote_data_stream_test.rb +46 -0
  653. data/spec/unit_tests_platinum/unit/info_test.rb +40 -0
  654. data/spec/unit_tests_platinum/unit/knn_search_test.rb +40 -0
  655. data/spec/unit_tests_platinum/unit/license/delete_test.rb +43 -0
  656. data/spec/unit_tests_platinum/unit/license/get_test.rb +43 -0
  657. data/spec/unit_tests_platinum/unit/license/post_test.rb +43 -0
  658. data/spec/unit_tests_platinum/unit/logstash/delete_pipeline_test.rb +46 -0
  659. data/spec/unit_tests_platinum/unit/logstash/get_pipeline_test.rb +46 -0
  660. data/spec/unit_tests_platinum/unit/logstash/put_pipeline_test.rb +46 -0
  661. data/spec/unit_tests_platinum/unit/machine_learning/close_job_test.rb +43 -0
  662. data/spec/unit_tests_platinum/unit/machine_learning/delete_datafeed_test.rb +43 -0
  663. data/spec/unit_tests_platinum/unit/machine_learning/delete_expired_data_test.rb +43 -0
  664. data/spec/unit_tests_platinum/unit/machine_learning/delete_filter_test.rb +43 -0
  665. data/spec/unit_tests_platinum/unit/machine_learning/delete_forecast_test.rb +43 -0
  666. data/spec/unit_tests_platinum/unit/machine_learning/delete_job_test.rb +43 -0
  667. data/spec/unit_tests_platinum/unit/machine_learning/delete_model_alias_test.rb +40 -0
  668. data/spec/unit_tests_platinum/unit/machine_learning/delete_model_snapshot_test.rb +43 -0
  669. data/spec/unit_tests_platinum/unit/machine_learning/flush_job_test.rb +43 -0
  670. data/spec/unit_tests_platinum/unit/machine_learning/forecast_test.rb +43 -0
  671. data/spec/unit_tests_platinum/unit/machine_learning/get_buckets_test.rb +43 -0
  672. data/spec/unit_tests_platinum/unit/machine_learning/get_categories_test.rb +43 -0
  673. data/spec/unit_tests_platinum/unit/machine_learning/get_datafeed_stats_test.rb +43 -0
  674. data/spec/unit_tests_platinum/unit/machine_learning/get_datafeeds_test.rb +43 -0
  675. data/spec/unit_tests_platinum/unit/machine_learning/get_filters_test.rb +43 -0
  676. data/spec/unit_tests_platinum/unit/machine_learning/get_influencers_test.rb +43 -0
  677. data/spec/unit_tests_platinum/unit/machine_learning/get_job_stats_test.rb +43 -0
  678. data/spec/unit_tests_platinum/unit/machine_learning/get_jobs_test.rb +43 -0
  679. data/spec/unit_tests_platinum/unit/machine_learning/get_model_snapshots_test.rb +43 -0
  680. data/spec/unit_tests_platinum/unit/machine_learning/get_overall_buckets_test.rb +43 -0
  681. data/spec/unit_tests_platinum/unit/machine_learning/get_records_test.rb +43 -0
  682. data/spec/unit_tests_platinum/unit/machine_learning/open_job_test.rb +43 -0
  683. data/spec/unit_tests_platinum/unit/machine_learning/post_data_test.rb +43 -0
  684. data/spec/unit_tests_platinum/unit/machine_learning/preview_data_frame_analytics_test.rb +64 -0
  685. data/spec/unit_tests_platinum/unit/machine_learning/preview_datafeed_test.rb +43 -0
  686. data/spec/unit_tests_platinum/unit/machine_learning/put_datafeed_test.rb +43 -0
  687. data/spec/unit_tests_platinum/unit/machine_learning/put_filter_test.rb +43 -0
  688. data/spec/unit_tests_platinum/unit/machine_learning/put_job_test.rb +43 -0
  689. data/spec/unit_tests_platinum/unit/machine_learning/put_trained_model_alias_test.rb +40 -0
  690. data/spec/unit_tests_platinum/unit/machine_learning/revert_model_snapshot_test.rb +43 -0
  691. data/spec/unit_tests_platinum/unit/machine_learning/start_datafeed_test.rb +43 -0
  692. data/spec/unit_tests_platinum/unit/machine_learning/stop_datafeed_test.rb +43 -0
  693. data/spec/unit_tests_platinum/unit/machine_learning/update_data_frame_analytics_test.rb +40 -0
  694. data/spec/unit_tests_platinum/unit/machine_learning/update_datafeed_test.rb +43 -0
  695. data/spec/unit_tests_platinum/unit/machine_learning/update_filter_test.rb +43 -0
  696. data/spec/unit_tests_platinum/unit/machine_learning/update_job_test.rb +43 -0
  697. data/spec/unit_tests_platinum/unit/machine_learning/update_model_snapshot_test.rb +43 -0
  698. data/spec/unit_tests_platinum/unit/machine_learning/upgrade_job_snapshot_test.rb +43 -0
  699. data/spec/unit_tests_platinum/unit/machine_learning/validate_detector_test.rb +43 -0
  700. data/spec/unit_tests_platinum/unit/machine_learning/validate_test.rb +43 -0
  701. data/spec/unit_tests_platinum/unit/migration/deprecations_test.rb +42 -0
  702. data/spec/unit_tests_platinum/unit/monitoring/bulk_test.rb +43 -0
  703. data/spec/unit_tests_platinum/unit/rollup/get_rollup_index_caps_test.rb +40 -0
  704. data/spec/unit_tests_platinum/unit/rollup/rollup_test.rb +58 -0
  705. data/spec/unit_tests_platinum/unit/security/authenticate_test.rb +43 -0
  706. data/spec/unit_tests_platinum/unit/security/change_password_test.rb +55 -0
  707. data/spec/unit_tests_platinum/unit/security/clear_api_key_cache_test.rb +40 -0
  708. data/spec/unit_tests_platinum/unit/security/clear_cached_privileges_test.rb +40 -0
  709. data/spec/unit_tests_platinum/unit/security/clear_cached_realms_test.rb +43 -0
  710. data/spec/unit_tests_platinum/unit/security/clear_cached_roles_test.rb +43 -0
  711. data/spec/unit_tests_platinum/unit/security/delete_privileges_test.rb +43 -0
  712. data/spec/unit_tests_platinum/unit/security/delete_role_mapping_test.rb +43 -0
  713. data/spec/unit_tests_platinum/unit/security/delete_role_test.rb +43 -0
  714. data/spec/unit_tests_platinum/unit/security/delete_user_test.rb +43 -0
  715. data/spec/unit_tests_platinum/unit/security/disable_user_test.rb +43 -0
  716. data/spec/unit_tests_platinum/unit/security/enable_user_test.rb +43 -0
  717. data/spec/unit_tests_platinum/unit/security/get_privileges_test.rb +78 -0
  718. data/spec/unit_tests_platinum/unit/security/get_role_mapping_test.rb +54 -0
  719. data/spec/unit_tests_platinum/unit/security/get_role_test.rb +62 -0
  720. data/spec/unit_tests_platinum/unit/security/get_token_test.rb +43 -0
  721. data/spec/unit_tests_platinum/unit/security/get_user_privileges_test.rb +43 -0
  722. data/spec/unit_tests_platinum/unit/security/get_user_test.rb +61 -0
  723. data/spec/unit_tests_platinum/unit/security/grant_api_key_test.rb +41 -0
  724. data/spec/unit_tests_platinum/unit/security/has_privileges_test.rb +55 -0
  725. data/spec/unit_tests_platinum/unit/security/invalidate_token_test.rb +43 -0
  726. data/spec/unit_tests_platinum/unit/security/put_privileges_test.rb +43 -0
  727. data/spec/unit_tests_platinum/unit/security/put_role_mapping_test.rb +43 -0
  728. data/spec/unit_tests_platinum/unit/security/put_role_test.rb +43 -0
  729. data/spec/unit_tests_platinum/unit/security/put_user_test.rb +43 -0
  730. data/spec/unit_tests_platinum/unit/ssl/certificates_test.rb +43 -0
  731. data/spec/unit_tests_platinum/unit/text_structure/find_structure_test.rb +40 -0
  732. data/spec/unit_tests_platinum/unit/transform/upgrade_transforms_spec.rb +34 -0
  733. data/spec/unit_tests_platinum/unit/usage_test.rb +40 -0
  734. data/spec/unit_tests_platinum/unit/watcher/ack_watch_test.rb +55 -0
  735. data/spec/unit_tests_platinum/unit/watcher/activate_watch_test.rb +43 -0
  736. data/spec/unit_tests_platinum/unit/watcher/deactivate_watch_test.rb +43 -0
  737. data/spec/unit_tests_platinum/unit/watcher/delete_watch_test.rb +43 -0
  738. data/spec/unit_tests_platinum/unit/watcher/execute_watch_test.rb +55 -0
  739. data/spec/unit_tests_platinum/unit/watcher/get_watch_test.rb +43 -0
  740. data/spec/unit_tests_platinum/unit/watcher/put_watch_test.rb +43 -0
  741. data/spec/unit_tests_platinum/unit/watcher/query_watches_test.rb +52 -0
  742. data/spec/unit_tests_platinum/unit/watcher/start_test.rb +41 -0
  743. data/spec/unit_tests_platinum/unit/watcher/stats_test.rb +43 -0
  744. data/spec/unit_tests_platinum/unit/watcher/stop_test.rb +43 -0
  745. data/utils/README.md +2 -10
  746. data/utils/thor/.rubocop.yml +0 -2
  747. data/utils/thor/generate_source.rb +26 -47
  748. data/utils/thor/generator/endpoint_specifics.rb +2 -30
  749. data/utils/thor/generator/files_helper.rb +24 -37
  750. data/utils/thor/templates/{_params_registry.erb → _body.erb} +15 -12
  751. data/utils/thor/templates/_documentation_top.erb +1 -2
  752. data/utils/thor/templates/_method_setup.erb +20 -32
  753. data/utils/thor/templates/_perform_request.erb +16 -22
  754. data/utils/thor/templates/method.erb +2 -7
  755. metadata +632 -86
  756. data/lib/elasticsearch/api/actions/cat/params_registry.rb +0 -60
  757. data/lib/elasticsearch/api/actions/cluster/params_registry.rb +0 -60
  758. data/lib/elasticsearch/api/actions/dangling_indices/params_registry.rb +0 -60
  759. data/lib/elasticsearch/api/actions/features/params_registry.rb +0 -60
  760. data/lib/elasticsearch/api/actions/indices/params_registry.rb +0 -60
  761. data/lib/elasticsearch/api/actions/ingest/params_registry.rb +0 -60
  762. data/lib/elasticsearch/api/actions/nodes/params_registry.rb +0 -60
  763. data/lib/elasticsearch/api/actions/params_registry.rb +0 -58
  764. data/lib/elasticsearch/api/actions/shutdown/params_registry.rb +0 -60
  765. data/lib/elasticsearch/api/actions/snapshot/params_registry.rb +0 -60
  766. data/lib/elasticsearch/api/actions/tasks/params_registry.rb +0 -60
  767. data/spec/elasticsearch/api/actions/indices/flush_synced_spec.rb +0 -90
  768. data/spec/rest_yaml_tests_helper.rb +0 -131
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 939bf6cbd021069f4372d65eee24f74f5386bd6dfe66685fac5bbf119d7a657c
4
- data.tar.gz: 0d19a6d30dcc6904199ea989504bc499ae69cedf79be48845256a0ee1b3ef99c
3
+ metadata.gz: 99c344ac040a814342dad8d82f4f4b01fcb13fb8a98a1782bf381297efa53d99
4
+ data.tar.gz: 4b3778473c7384d433d9c9df4cf94b6e5f13b605c258e2f2781e4a1046272228
5
5
  SHA512:
6
- metadata.gz: 450130ff55e8a8d03b587a3790b873d2e08e5663c26d50f420026797b71cf75b2c564c6a50186b1ff9e6c850b4ae7a2e91ddcc65ad43ff2f145851340dc27dcf
7
- data.tar.gz: f4f462ff4e1c91d255b60c74b4eaf1337ce31ac4294b9065adc1fdc85cb53cd77d84120f3d894659915058f4f3df3055959670c44dfba743485e0c5c519f26bd
6
+ metadata.gz: 79009142d3cdb47fbab8ade4b2d66949bc1ef81f33653f17c1db9eceb745e34440a87efca4b8253fae189c52172890f978a2c2a8d11b1013cc469bc6503f5f40
7
+ data.tar.gz: c30ef81f519d5d61acd0ffa37f34fbe267ac8acba5f4ff48e493a39f0724ef4b07116a4674e2cba8ae74febd55bfc168349e1a5e02336b67c778068c33b714bd
data/Gemfile CHANGED
@@ -20,16 +20,8 @@ source 'https://rubygems.org'
20
20
  # Specify your gem's dependencies in elasticsearch-api.gemspec
21
21
  gemspec
22
22
 
23
- if File.exist? File.expand_path("../../elasticsearch-transport", __FILE__)
24
- gem 'elasticsearch-transport', path: File.expand_path("../../elasticsearch-transport", __FILE__), require: true
25
- end
26
-
27
23
  if File.exist? File.expand_path("../../elasticsearch/elasticsearch.gemspec", __FILE__)
28
- gem 'elasticsearch', path: File.expand_path("../../elasticsearch", __FILE__), require: false
29
- end
30
-
31
- if File.exist? File.expand_path("../../elasticsearch-extensions", __FILE__)
32
- gem 'elasticsearch-extensions', path: File.expand_path("../../elasticsearch-extensions", __FILE__), require: false
24
+ gem 'elasticsearch', path: File.expand_path('../../elasticsearch', __FILE__), require: false
33
25
  end
34
26
 
35
27
  group :development do
File without changes
data/README.md CHANGED
@@ -1,36 +1,46 @@
1
1
  # Elasticsearch::API
2
2
 
3
- **This library is part of the [`elasticsearch-ruby`](https://github.com/elasticsearch/elasticsearch-ruby/) package; please refer to it, unless you want to use this library standalone.**
3
+ **This library is part of the [`elasticsearch-ruby`](https://github.com/elasticsearch/elasticsearch-ruby/) package;
4
+ please refer to it, unless you want to use this library standalone.**
4
5
 
5
6
  ----
6
7
 
7
- The `elasticsearch-api` library provides a Ruby implementation of the [Elasticsearch](http://elasticsearch.com) REST API.
8
+ The `elasticsearch-api` library provides a Ruby implementation of
9
+ the [Elasticsearch](http://elasticsearch.com) REST API.
8
10
 
9
- It does not provide an Elasticsearch client; see the [`elasticsearch-transport`](https://github.com/elasticsearch/elasticsearch-ruby/tree/master/elasticsearch-transport) library.
11
+ It does not provide an Elasticsearch client; see the
12
+ [`elasticsearch-transport`](https://github.com/elasticsearch/elasticsearch-ruby/tree/main/elasticsearch-transport) library.
10
13
 
11
- Language clients are forward compatible; meaning that clients support communicating with greater or equal minor versions of Elasticsearch. Elasticsearch language clients are only backwards compatible with default distributions and without guarantees made.
14
+ We follow Ruby’s own maintenance policy and officially support all currently maintained versions per [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/).
15
+
16
+ Language clients are forward compatible; meaning that clients support communicating with greater minor versions of Elasticsearch. Elastic language clients are also backwards compatible with lesser supported minor Elasticsearch versions.
12
17
 
13
18
  ## Installation
14
19
 
15
20
  Install the package from [Rubygems](https://rubygems.org):
16
21
 
17
- ```
18
- gem install elasticsearch-api
19
- ```
22
+ gem install elasticsearch-api
20
23
 
21
- Or add it to your Gemfile:
24
+ To use an unreleased version, either add it to your `Gemfile` for [Bundler](http://gembundler.com):
22
25
 
23
- ```
24
- gem 'elasticsearch-api'
25
- ```
26
+ gem 'elasticsearch-api', git: 'git://github.com/elasticsearch/elasticsearch-ruby.git'
27
+
28
+ or install it from a source code checkout:
29
+
30
+ git clone https://github.com/elasticsearch/elasticsearch-ruby.git
31
+ cd elasticsearch-ruby/elasticsearch-api
32
+ bundle install
33
+ rake install
26
34
 
27
35
  ## Usage
28
36
 
29
- The library is designed as a group of standalone Ruby modules, which can be mixed into a class providing connection to Elasticsearch -- an Elasticsearch client. It's possible to mix it into any client, and the methods will be available in the top namespace.
37
+ The library is designed as a group of standalone Ruby modules, which can be mixed into a class
38
+ providing connection to Elasticsearch -- an Elasticsearch client.
30
39
 
31
40
  ### Usage with the `elasticsearch` gem
32
41
 
33
- **When you use the client from the [`elasticsearch-ruby`](https://github.com/elasticsearch/elasticsearch-ruby/) package, the library modules have been already included**, so you just call the API methods:
42
+ **When you use the client from the [`elasticsearch-ruby`](https://github.com/elasticsearch/elasticsearch-ruby/) package,
43
+ the library modules have been already included**, so you just call the API methods:
34
44
 
35
45
  ```ruby
36
46
  require 'elasticsearch'
@@ -44,7 +54,8 @@ client.search(index: 'myindex', body: { query: { match: { title: 'test' } } })
44
54
  # => {"took"=>2, ..., "hits"=>{"total":5, ...}}
45
55
  ```
46
56
 
47
- Full documentation is included as RDoc annotations in the source code and available online at <http://rubydoc.info/gems/elasticsearch-api>.
57
+ Full documentation and examples are included as RDoc annotations in the source code
58
+ and available online at <http://rubydoc.info/gems/elasticsearch-api>.
48
59
 
49
60
  ### Usage with a custom client
50
61
 
@@ -177,7 +188,7 @@ time rake test:unit
177
188
  time rake test:integration
178
189
  ```
179
190
 
180
- We run the test suite for Elasticsearch's Rest API tests. You can read more about this in [the test runner README](https://github.com/elastic/elasticsearch-ruby/tree/master/api-spec-testing#rest-api-yaml-test-runner).
191
+ We run the test suite for Elasticsearch's Rest API tests. You can read more about this in [the test runner README](https://github.com/elastic/elasticsearch-ruby/tree/main/api-spec-testing#rest-api-yaml-test-runner).
181
192
 
182
193
  The `rest_api` needs the test files from Elasticsearch. You can run the rake task to download the test artifacts in the root folder of the project. This task needs a running cluster to determine which version and build hash of Elasticsearch to use and test against. `TEST_ES_SERVER=http://localhost:9200 rake elasticsearch:download_artifacts`. This will download the necessary files used for the integration tests to `./tmp`.
183
194
 
data/Rakefile CHANGED
@@ -34,17 +34,34 @@ namespace :test do
34
34
 
35
35
  # Unit tests - rake test:unit
36
36
  #
37
+ desc 'Run unit tests'
37
38
  task unit: :spec
38
39
  RSpec::Core::RakeTask.new(:spec) do |t|
39
- t.exclude_pattern = 'spec/**{,/*/**}/rest_api_yaml_spec.rb'
40
+ t.exclude_pattern = 'spec/elasticsearch/api/rest_api_yaml_spec.rb'
40
41
  end
41
42
 
42
- desc "Run Rest API Spec tests"
43
+ namespace :platinum do
44
+ desc 'Run Platinum Rest API Spec tests'
45
+ RSpec::Core::RakeTask.new(:api) do |t|
46
+ ENV['TEST_SUITE'] = 'platinum'
47
+ Rake::Task['test:rest_api'].invoke
48
+ end
49
+
50
+ desc 'Run Platinum Unit tests - DEPRECATED: Will be migrated to RSpec'
51
+ Rake::TestTask.new(:unit) do |test|
52
+ test.libs << 'spec/unit_tests_platinum'
53
+ test.test_files = FileList['spec/unit_tests_platinum/unit/**/*_test.rb']
54
+ test.verbose = false
55
+ test.warning = false
56
+ end
57
+ end
58
+
59
+ desc 'Run Rest API Spec tests'
43
60
  RSpec::Core::RakeTask.new(:rest_api) do |t|
44
- t.pattern = 'spec/**{,/*/**}/rest_api_yaml_spec.rb'
61
+ t.pattern = 'spec/elasticsearch/api/rest_api_yaml_spec.rb'
45
62
  end
46
63
 
47
- desc "Run integration tests"
64
+ desc 'Run integration tests'
48
65
  task :integration do
49
66
  Rake::Task['test:rest_api'].invoke
50
67
  end
@@ -54,58 +71,6 @@ namespace :test do
54
71
  Rake::Task['test:unit'].invoke
55
72
  Rake::Task['test:integration'].invoke
56
73
  end
57
-
58
- def refresh_artifacts(build_hash, version_number)
59
- unless build_hash
60
- STDERR.puts "[!] Cannot determine checkout build hash -- server not running"
61
- exit(1)
62
- end
63
-
64
- puts 'Downloading artifacts file...'
65
- filename = 'tmp/artifacts.json'
66
- `curl -s https://artifacts-api.elastic.co/v1/versions/#{version_number} -o #{filename}`
67
-
68
- unless File.exists?("./#{filename}")
69
- STDERR.puts '[!] Couldn\'t download artifacts file'
70
- exit 1
71
- end
72
-
73
- artifacts = JSON.parse(File.read('./tmp/artifacts.json'))
74
-
75
- build_hash_artifact = artifacts['version']['builds'].select do |a|
76
- a.dig('projects', 'elasticsearch', 'commit_hash') == build_hash
77
- end.first
78
- # Dig into the elasticsearch packages, search for the rest-resources-zip package and catch the URL:
79
- zip_url = build_hash_artifact.dig('projects', 'elasticsearch', 'packages').select { |k,v| k =~ /rest-resources-zip/ }.map { | _, v| v['url'] }.first
80
-
81
- filename = zip_url.split('/').last
82
- puts 'Downloading zip file:'
83
- `curl -s #{zip_url} -o tmp/#{filename}`
84
-
85
- unless File.exists?("./tmp/#{filename}")
86
- STDERR.puts '[!] Couldn\'t download artifact'
87
- exit 1
88
- end
89
-
90
- puts "Unzipping file #{filename}"
91
- `unzip -o tmp/#{filename} -d tmp/`
92
- end
93
-
94
- namespace :cluster do
95
- desc "Start Elasticsearch nodes for tests"
96
- task :start do
97
- $LOAD_PATH << File.expand_path('../../elasticsearch-transport/lib', __FILE__) << File.expand_path('../test', __FILE__)
98
- require 'elasticsearch/extensions/test/cluster'
99
- Elasticsearch::Extensions::Test::Cluster.start
100
- end
101
-
102
- desc "Stop Elasticsearch nodes for tests"
103
- task :stop do
104
- $LOAD_PATH << File.expand_path('../../elasticsearch-transport/lib', __FILE__) << File.expand_path('../test', __FILE__)
105
- require 'elasticsearch/extensions/test/cluster'
106
- Elasticsearch::Extensions::Test::Cluster.stop
107
- end
108
- end
109
74
  end
110
75
 
111
76
  # ----- Documentation tasks ---------------------------------------------------
@@ -0,0 +1,118 @@
1
+ # Rest API YAML Test Runner
2
+
3
+ The specs in `elasticsearch-api` automatically run the tests from [Elasticsearch's REST API Spec tests](https://github.com/elastic/elasticsearch/tree/main/rest-api-spec/src/main/resources/rest-api-spec/test#test-suite). The test runner is defined in the `spec` folder, starting with the `rest_api_yaml_spec.rb` file.
4
+
5
+ You can run the tests with Rake. The main task is `rake test:rest_api`. This task will evaluate the `TEST_SUITE` environment variable. It will run either the `free` or `platinum` tests suites depending on the value of `TEST_SUITE`. If you don't set this value, the task will run the `free` test suite by default. To run the `platinum` test suite use:
6
+ ```
7
+ TEST_SUITE=platinum rake test:rest_api
8
+ ```
9
+
10
+ Or the shortcut:
11
+ ```
12
+ rake test:platinum:api
13
+ ```
14
+
15
+ ## REST API YAML Spec
16
+
17
+ The file that traverses the yaml files and loads a **TestFile** object per each of them:
18
+ `elasticsearch-api/spec/elasticsearch/api/rest_api_yaml_spec.rb`
19
+
20
+ You can use the SINGLE_TEST env variable to run just one test or one test directory. E.g.:
21
+ ```
22
+ $ cd elasticsearch-api && SINGLE_TEST=indices.resolve_index/10_basic_resolve_index.yml TEST_ES_SERVER='http://localhost:9200' be rake test:rest_api
23
+ ```
24
+ And:
25
+ ```
26
+ $ cd elasticsearch-api && SINGLE_TEST=indices.resolve_index TEST_ES_SERVER='http://localhost:9200' be rake test:rest_api
27
+ ```
28
+
29
+ ## Skipped tests
30
+
31
+ We sometimes skip tests, generally due to limitations on how we run the CI server or for stuff that hasn't been completely implemented on the client yet. Skipped tests are located in `elasticsearch-api/spec/skipped_tests.yml`. You can run just the tests which are currently being skipped by running:
32
+ ```
33
+ $ cd elasticsearch-api && TEST_SUITE=(free|platinum) RUN_SKIPPED_TESTS=true TEST_ES_SERVER='http://localhost:9200' be rake test:rest_api
34
+ ```
35
+
36
+ ## TestFile
37
+ Class representing a single test file. Contains setup, teardown and tests.
38
+ `../api-spec-testing/test_file.rb`
39
+
40
+ ## Test
41
+ Every single test in the test file is represented in the Test object.
42
+ `../api-spec-testing/test_file/test.rb`
43
+
44
+ ## TaskGroup
45
+
46
+ Tests are ordered in task groups, an array of TaskGroup objects.
47
+ `../api-spec-testing/test_file/task_group.rb`
48
+
49
+ Task Groups are a representation of a block of actions consisting of 'do' actions and their verifications. e.g.:
50
+ ```yaml
51
+ - do:
52
+ index:
53
+ index: test-index
54
+ id: 1
55
+ body: { foo: bar }
56
+
57
+ - match: { _index: test-index }
58
+ - match: { _id: "1"}
59
+ - match: { _version: 1}
60
+ ```
61
+
62
+ **Before** each test, the spec runner runs `clear_data` on the test_file. This clears indices, index templates, snapshots and repositories. For platinum it also clears roles, users, privileges, datafeeds, ml_jobs and more.
63
+
64
+ **After** each test, it runs the test file teardown and `clear_data` again.
65
+
66
+ For each TaskGroup, it sees what's in the task group definition and runs an expectation test.
67
+
68
+ ## Action
69
+
70
+ This file is where the action is executed, where we call the client with the method from the test and save the response which is then used in the task group.
71
+
72
+ ## Rest YAML tests Helper
73
+
74
+ `elasticsearch-api/spec/rest_yaml_tests_helper.rb`
75
+
76
+ - `ADMIN_CLIENT` is defined here.
77
+ - `SINGLE_TEST` is defined here.
78
+ - Skipped tests are listed here
79
+
80
+ ## Spec Helper
81
+
82
+ - `DEFAULT_CLIENT` is defined here
83
+
84
+ ## Enable Logging
85
+
86
+ To enable logging, set the environment `QUIET` to false before running the tests. In CI, this is located in the [Dockerfile](https://github.com/elastic/elasticsearch-ruby/blob/main/.ci/Dockerfile). The environment variable is evaluated in the Rest YAML tests Helper file.
87
+
88
+ # Features
89
+
90
+ ## RSpec Matchers
91
+
92
+ The tests use custom [RSpec Matchers](https://www.rubydoc.info/gems/rspec-expectations/RSpec/Matchers) defined in `api-spec-testing/rspec_matchers.rb`.
93
+
94
+ From the [Rest API test docs](https://github.com/elastic/elasticsearch/tree/master/rest-api-spec/src/main/resources/rest-api-spec/test#do):
95
+
96
+ ## `catch`
97
+
98
+ > If the arguments to `do` include `catch`, then we are expecting an error, which should be caught and tested.
99
+
100
+ In `rest_api_yaml_spec`, there's a check for `catch_exception?` per task_group. This checks if the `do` definitions have any `catch` definitions. If there is a `catch`, it'll send the request and use the `match_error` RSpec custom matcher to validate the expected error.
101
+
102
+ ## `warnings`
103
+
104
+ >If the arguments to `do` include `warnings` then we are expecting a Warning header to come back from the request. If the arguments don’t include a warnings argument then we don’t expect the response to include a Warning header. The warnings must match exactly. Using it looks like this:
105
+
106
+ ```
107
+ - do:
108
+ warnings:
109
+ - '[index] is deprecated'
110
+ - quotes are not required because yaml
111
+ - but this argument is always a list, never a single string
112
+ - no matter how many warnings you expect
113
+ get:
114
+ index: test
115
+ type: test
116
+ id: 1
117
+ ```
118
+
@@ -0,0 +1,28 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'logger'
19
+
20
+ module Elasticsearch
21
+ module RestAPIYAMLTests
22
+ module Logging
23
+ def logger
24
+ @logger ||= Logger.new($stdout)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,312 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # Match the `length` of a field.
19
+ RSpec::Matchers.define :match_response_field_length do |expected_pairs, test|
20
+ match do |response|
21
+ expected_pairs.all? do |expected_key, expected_value|
22
+ # ssl test returns results at '$body' key. See ssl/10_basic.yml
23
+ expected_pairs = expected_pairs['$body'] if expected_pairs['$body']
24
+
25
+ split_key = TestFile::Test.split_and_parse_key(expected_key).collect do |k|
26
+ test.get_cached_value(k)
27
+ end
28
+
29
+ actual_value = split_key.inject(response) do |_response, key|
30
+ # If the key is an index, indicating element of a list
31
+ if _response.empty? && key == '$body'
32
+ _response
33
+ else
34
+ _response[key] || _response[key.to_s]
35
+ end
36
+ end
37
+ actual_value.size == expected_value
38
+ end
39
+ end
40
+ end
41
+
42
+ # Validate that a field is `true`.
43
+ RSpec::Matchers.define :match_true_field do |field, test|
44
+ match do |response|
45
+ # Handle is_true: ''
46
+ return !!response if field == ''
47
+
48
+ split_key = TestFile::Test.split_and_parse_key(field).collect do |k|
49
+ test.get_cached_value(k)
50
+ end
51
+ !!TestFile::Test.find_value_in_document(split_key, response)
52
+ end
53
+
54
+ failure_message do |response|
55
+ "the response `#{response}` does not have `true` in the field `#{field}`"
56
+ end
57
+ end
58
+
59
+ # Validate that a field is `false`.
60
+ RSpec::Matchers.define :match_false_field do |field, test|
61
+ match do |response|
62
+ # Handle is_false: ''
63
+ return !response if field == ''
64
+ split_key = TestFile::Test.split_and_parse_key(field).collect do |k|
65
+ test.get_cached_value(k)
66
+ end
67
+ value_in_doc = TestFile::Test.find_value_in_document(split_key, response)
68
+ value_in_doc == 0 || !value_in_doc
69
+ end
70
+
71
+ failure_message do |response|
72
+ "the response `#{response}` does not have `false` in the field `#{field}`"
73
+ end
74
+ end
75
+
76
+ # Validate that a field is `gte` than a given value.
77
+ RSpec::Matchers.define :match_gte_field do |expected_pairs, test|
78
+ match do |response|
79
+ expected_pairs.all? do |expected_key, expected_value|
80
+
81
+ split_key = TestFile::Test.split_and_parse_key(expected_key).collect do |k|
82
+ test.get_cached_value(k)
83
+ end
84
+ actual_value = split_key.inject(response) do |_response, key|
85
+
86
+ # If the key is an index, indicating element of a list
87
+ if _response.empty? && key == '$body'
88
+ _response
89
+ else
90
+ _response[key] || _response[key]
91
+ end
92
+ end
93
+ actual_value >= test.get_cached_value(expected_value)
94
+ end
95
+ end
96
+ end
97
+
98
+ # Validate that a field is `gt` than a given value.
99
+ RSpec::Matchers.define :match_gt_field do |expected_pairs, test|
100
+ match do |response|
101
+ expected_pairs.all? do |expected_key, expected_value|
102
+
103
+ split_key = TestFile::Test.split_and_parse_key(expected_key).collect do |k|
104
+ test.get_cached_value(k)
105
+ end
106
+
107
+ actual_value = split_key.inject(response) do |_response, key|
108
+ # If the key is an index, indicating element of a list
109
+ if _response.empty? && key == '$body'
110
+ _response
111
+ else
112
+ _response[key] || _response[key.to_s]
113
+ end
114
+ end
115
+ actual_value > test.get_cached_value(expected_value)
116
+ end
117
+ end
118
+ end
119
+
120
+ # Validate that a field is `lte` than a given value.
121
+ RSpec::Matchers.define :match_lte_field do |expected_pairs, test|
122
+ match do |response|
123
+ expected_pairs.all? do |expected_key, expected_value|
124
+
125
+ split_key = TestFile::Test.split_and_parse_key(expected_key).collect do |k|
126
+ test.get_cached_value(k)
127
+ end
128
+
129
+ actual_value = split_key.inject(response) do |_response, key|
130
+ # If the key is an index, indicating element of a list
131
+ if _response.empty? && key == '$body'
132
+ _response
133
+ else
134
+ _response[key] || _response[key.to_s]
135
+ end
136
+ end
137
+ actual_value <= test.get_cached_value(expected_value)
138
+ end
139
+ end
140
+ end
141
+
142
+ # Validate that a field is `lt` than a given value.
143
+ RSpec::Matchers.define :match_lt_field do |expected_pairs, test|
144
+ match do |response|
145
+ expected_pairs.all? do |expected_key, expected_value|
146
+
147
+ split_key = TestFile::Test.split_and_parse_key(expected_key).collect do |k|
148
+ test.get_cached_value(k)
149
+ end
150
+
151
+ actual_value = split_key.inject(response) do |_response, key|
152
+ # If the key is an index, indicating element of a list
153
+ if _response.empty? && key == '$body'
154
+ _response
155
+ else
156
+ _response[key] || _response[key.to_s]
157
+ end
158
+ end
159
+ actual_value < test.get_cached_value(expected_value)
160
+ end
161
+ end
162
+ end
163
+
164
+ # Match an arbitrary field of a response to a given value.
165
+ RSpec::Matchers.define :match_response do |pairs, test|
166
+ match do |response|
167
+ pairs = sanitize_pairs(pairs)
168
+ compare_pairs(pairs, response, test).empty?
169
+ end
170
+
171
+ failure_message do |response|
172
+ "the expected response pair/value(s) #{@mismatched_pairs}" +
173
+ " does not match the pair/value(s) in the response #{response}"
174
+ end
175
+
176
+ def sanitize_pairs(expected_pairs)
177
+ # sql test returns results at '$body' key. See sql/translate.yml
178
+ @pairs ||= expected_pairs['$body'] ? expected_pairs['$body'] : expected_pairs
179
+ end
180
+
181
+ def compare_pairs(expected_pairs, response, test)
182
+ @mismatched_pairs = {}
183
+ if expected_pairs.is_a?(String)
184
+ @mismatched_pairs = expected_pairs unless compare_string_response(expected_pairs, response)
185
+ else
186
+ compare_hash(expected_pairs, response, test)
187
+ end
188
+ @mismatched_pairs
189
+ end
190
+
191
+ def compare_hash(expected_pairs, actual_hash, test)
192
+ expected_pairs.each do |expected_key, expected_value|
193
+ # Find the value to compare in the response
194
+ split_key = TestFile::Test.split_and_parse_key(expected_key).collect do |k|
195
+ # Sometimes the expected *key* is a cached value from a previous request.
196
+ test.get_cached_value(k)
197
+ end
198
+ # We now accept 'nested.keys' so let's try the previous implementation and if that doesn't
199
+ # work, try with the nested key, otherwise, raise exception.
200
+ begin
201
+ actual_value = TestFile::Test.find_value_in_document(split_key, actual_hash)
202
+ rescue TypeError => e
203
+ actual_value = TestFile::Test.find_value_in_document(expected_key, actual_hash)
204
+ rescue StandardError => e
205
+ raise e
206
+ end
207
+ # When the expected_key is ''
208
+ actual_value = actual_hash if split_key.empty?
209
+ # Sometimes the key includes dots. See watcher/put_watch/60_put_watch_with_action_condition.yml
210
+ actual_value = TestFile::Test.find_value_in_document(expected_key, actual_hash) if actual_value.nil?
211
+
212
+ # Sometimes the expected *value* is a cached value from a previous request.
213
+ # See test api_key/10_basic.yml
214
+ expected_value = test.get_cached_value(expected_value)
215
+
216
+ case expected_value
217
+ when Hash
218
+ compare_hash(expected_value, actual_value, test)
219
+ when Array
220
+ unless compare_array(expected_value, actual_value, test, actual_hash)
221
+ @mismatched_pairs.merge!(expected_key => expected_value)
222
+ end
223
+ when String
224
+ unless compare_string(expected_value, actual_value, test, actual_hash)
225
+ @mismatched_pairs.merge!(expected_key => expected_value)
226
+ end
227
+ else
228
+ unless expected_value == actual_value
229
+ @mismatched_pairs.merge!(expected_key => expected_value)
230
+ end
231
+ end
232
+ end
233
+ end
234
+
235
+ def compare_string(expected, actual_value, test, response)
236
+ # When you must match a regex. For example:
237
+ # match: {task: '/.+:\d+/'}
238
+ if expected[0] == '/' && expected[-1] == '/'
239
+ parsed = expected
240
+ expected.scan(/\$\{([a-z_0-9]+)\}/) do |match|
241
+ parsed = parsed.gsub(/\$\{?#{match.first}\}?/, test.cached_values[match.first])
242
+ end
243
+ /#{parsed.tr("/", "")}/ =~ actual_value
244
+ elsif !!(expected.match?(/^-?[0-9]{1}\.[0-9]+E[0-9]+/))
245
+ # When the value in the yaml test is a big number, the format is
246
+ # different from what Ruby uses, so we transform X.XXXXEXX to X.XXXXXe+XX
247
+ # to be able to compare the values
248
+ actual_value.to_s == expected.gsub('E', 'e+')
249
+ elsif expected == '' && actual_value != ''
250
+ actual_value == response
251
+ else
252
+ expected == actual_value
253
+ end
254
+ end
255
+
256
+ def compare_array(expected, actual, test, response)
257
+ expected.each_with_index do |value, i|
258
+ case value
259
+ when Hash
260
+ return false unless compare_hash(value, actual[i], test)
261
+ when Array
262
+ return false unless compare_array(value, actual[i], test, response)
263
+ when String
264
+ return false unless compare_string(value, actual[i], test, response)
265
+ end
266
+ end
267
+ end
268
+
269
+ def compare_string_response(expected_string, response)
270
+ regexp = Regexp.new(expected_string.strip[1..-2], Regexp::EXTENDED|Regexp::MULTILINE)
271
+ regexp =~ response
272
+ end
273
+ end
274
+
275
+ # Match that a request returned a given error.
276
+ RSpec::Matchers.define :match_error do |expected_error|
277
+ match do |actual_error|
278
+ # Remove surrounding '/' in string representing Regex
279
+ expected_error = expected_error.chomp("/")
280
+ expected_error = expected_error[1..-1] if expected_error =~ /^\//
281
+ message = actual_error.message.tr("\\","")
282
+
283
+ case expected_error
284
+ when 'request_timeout'
285
+ message =~ /\[408\]/
286
+ when 'missing'
287
+ message =~ /\[404\]/
288
+ when 'conflict'
289
+ message =~ /\[409\]/
290
+ when 'request'
291
+ message =~ /\[500\]/
292
+ when 'bad_request'
293
+ message =~ /\[400\]/
294
+ when 'param'
295
+ message =~ /\[400\]/ ||
296
+ actual_error.is_a?(ArgumentError)
297
+ when 'unauthorized'
298
+ actual_error.is_a?(Elastic::Transport::Transport::Errors::Unauthorized)
299
+ when 'forbidden'
300
+ actual_error.is_a?(Elastic::Transport::Transport::Errors::Forbidden)
301
+ when /error parsing field/
302
+ message =~ /\[400\]/ ||
303
+ actual_error.is_a?(Elastic::Transport::Transport::Errors::BadRequest)
304
+ else
305
+ message =~ /#{expected_error}/
306
+ end
307
+ end
308
+
309
+ failure_message do |actual_error|
310
+ "the error `#{actual_error}` does not match the expected error `#{expected_error}`"
311
+ end
312
+ end