opensearch-ruby 1.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +80 -44
  4. data/USER_GUIDE.md +147 -0
  5. data/bin/opensearch_ruby_console +4 -34
  6. data/lib/opensearch/api/actions/abort_benchmark.rb +49 -0
  7. data/lib/opensearch/api/actions/benchmark.rb +88 -0
  8. data/lib/opensearch/api/actions/bulk.rb +91 -0
  9. data/lib/opensearch/api/actions/cat/aliases.rb +79 -0
  10. data/lib/opensearch/api/actions/cat/all_pit_segments.rb +45 -0
  11. data/lib/opensearch/api/actions/cat/allocation.rb +83 -0
  12. data/lib/opensearch/api/actions/cat/cluster_manager.rb +54 -0
  13. data/lib/opensearch/api/actions/cat/count.rb +75 -0
  14. data/lib/opensearch/api/actions/cat/fielddata.rb +77 -0
  15. data/lib/opensearch/api/actions/cat/health.rb +72 -0
  16. data/lib/opensearch/api/actions/cat/help.rb +61 -0
  17. data/lib/opensearch/api/actions/cat/indices.rb +93 -0
  18. data/lib/opensearch/api/actions/cat/master.rb +73 -0
  19. data/lib/opensearch/api/actions/cat/nodeattrs.rb +73 -0
  20. data/lib/opensearch/api/actions/cat/nodes.rb +82 -0
  21. data/lib/opensearch/api/actions/cat/params_registry.rb +69 -0
  22. data/lib/opensearch/api/actions/cat/pending_tasks.rb +76 -0
  23. data/lib/opensearch/api/actions/cat/pit_segments.rb +48 -0
  24. data/lib/opensearch/api/actions/cat/plugins.rb +75 -0
  25. data/lib/opensearch/api/actions/cat/recovery.rb +84 -0
  26. data/lib/opensearch/api/actions/cat/repositories.rb +73 -0
  27. data/lib/opensearch/api/actions/cat/segments.rb +76 -0
  28. data/lib/opensearch/api/actions/cat/shards.rb +85 -0
  29. data/lib/opensearch/api/actions/cat/snapshots.rb +82 -0
  30. data/lib/opensearch/api/actions/cat/tasks.rb +77 -0
  31. data/lib/opensearch/api/actions/cat/templates.rb +80 -0
  32. data/lib/opensearch/api/actions/cat/thread_pool.rb +84 -0
  33. data/lib/opensearch/api/actions/clear_scroll.rb +62 -0
  34. data/lib/opensearch/api/actions/cluster/allocation_explain.rb +67 -0
  35. data/lib/opensearch/api/actions/cluster/delete_component_template.rb +68 -0
  36. data/lib/opensearch/api/actions/cluster/delete_voting_config_exclusions.rb +59 -0
  37. data/lib/opensearch/api/actions/cluster/exists_component_template.rb +70 -0
  38. data/lib/opensearch/api/actions/cluster/get_component_template.rb +70 -0
  39. data/lib/opensearch/api/actions/cluster/get_settings.rb +67 -0
  40. data/lib/opensearch/api/actions/cluster/health.rb +88 -0
  41. data/lib/opensearch/api/actions/cluster/params_registry.rb +69 -0
  42. data/lib/opensearch/api/actions/cluster/pending_tasks.rb +64 -0
  43. data/lib/opensearch/api/actions/cluster/post_voting_config_exclusions.rb +63 -0
  44. data/lib/opensearch/api/actions/cluster/put_component_template.rb +72 -0
  45. data/lib/opensearch/api/actions/cluster/put_settings.rb +68 -0
  46. data/{spec/unit/wrapper_gem_spec.rb → lib/opensearch/api/actions/cluster/remote_info.rb} +20 -17
  47. data/lib/opensearch/api/actions/cluster/reroute.rb +72 -0
  48. data/lib/opensearch/api/actions/cluster/state.rb +87 -0
  49. data/lib/opensearch/api/actions/cluster/stats.rb +68 -0
  50. data/lib/opensearch/api/actions/count.rb +96 -0
  51. data/lib/opensearch/api/actions/create.rb +60 -0
  52. data/lib/opensearch/api/actions/create_pit.rb +45 -0
  53. data/lib/opensearch/api/actions/dangling_indices/delete_dangling_index.rb +70 -0
  54. data/lib/opensearch/api/actions/dangling_indices/import_dangling_index.rb +69 -0
  55. data/lib/opensearch/api/actions/dangling_indices/list_dangling_indices.rb +51 -0
  56. data/lib/opensearch/api/actions/dangling_indices/params_registry.rb +69 -0
  57. data/lib/opensearch/api/actions/delete.rb +89 -0
  58. data/lib/opensearch/api/actions/delete_all_pits.rb +26 -0
  59. data/lib/opensearch/api/actions/delete_by_query.rb +133 -0
  60. data/lib/opensearch/api/actions/delete_by_query_rethrottle.rb +62 -0
  61. data/lib/opensearch/api/actions/delete_by_rethrottle.rb +55 -0
  62. data/lib/opensearch/api/actions/delete_pit.rb +30 -0
  63. data/lib/opensearch/api/actions/delete_script.rb +66 -0
  64. data/lib/opensearch/api/actions/exists.rb +94 -0
  65. data/lib/opensearch/api/actions/exists_source.rb +89 -0
  66. data/lib/opensearch/api/actions/explain.rb +99 -0
  67. data/lib/opensearch/api/actions/features/get_features.rb +61 -0
  68. data/lib/opensearch/api/actions/features/params_registry.rb +69 -0
  69. data/{Rakefile → lib/opensearch/api/actions/features/reset_features.rb} +27 -35
  70. data/lib/opensearch/api/actions/field_caps.rb +78 -0
  71. data/lib/opensearch/api/actions/get.rb +93 -0
  72. data/lib/opensearch/api/actions/get_all_pits.rb +26 -0
  73. data/lib/opensearch/api/actions/get_script.rb +64 -0
  74. data/lib/opensearch/api/actions/get_script_context.rb +53 -0
  75. data/lib/opensearch/api/actions/get_script_languages.rb +53 -0
  76. data/lib/opensearch/api/actions/get_source.rb +87 -0
  77. data/lib/opensearch/api/actions/http/connect.rb +28 -0
  78. data/lib/opensearch/api/actions/http/delete.rb +28 -0
  79. data/lib/opensearch/api/actions/http/get.rb +28 -0
  80. data/lib/opensearch/api/actions/http/head.rb +28 -0
  81. data/lib/opensearch/api/actions/http/options.rb +28 -0
  82. data/lib/opensearch/api/actions/http/patch.rb +28 -0
  83. data/lib/opensearch/api/actions/http/post.rb +28 -0
  84. data/lib/opensearch/api/actions/http/put.rb +28 -0
  85. data/lib/opensearch/api/actions/http/request.rb +27 -0
  86. data/lib/opensearch/api/actions/http/trace.rb +28 -0
  87. data/lib/opensearch/api/actions/index.rb +96 -0
  88. data/lib/opensearch/api/actions/indices/add_block.rb +78 -0
  89. data/lib/opensearch/api/actions/indices/analyze.rb +71 -0
  90. data/lib/opensearch/api/actions/indices/clear_cache.rb +79 -0
  91. data/lib/opensearch/api/actions/indices/clone.rb +75 -0
  92. data/lib/opensearch/api/actions/indices/close.rb +76 -0
  93. data/lib/opensearch/api/actions/indices/create.rb +71 -0
  94. data/lib/opensearch/api/actions/indices/delete.rb +78 -0
  95. data/lib/opensearch/api/actions/indices/delete_alias.rb +72 -0
  96. data/lib/opensearch/api/actions/indices/delete_index_template.rb +68 -0
  97. data/lib/opensearch/api/actions/indices/delete_template.rb +72 -0
  98. data/lib/opensearch/api/actions/indices/disk_usage.rb +76 -0
  99. data/lib/opensearch/api/actions/indices/exists.rb +79 -0
  100. data/lib/opensearch/api/actions/indices/exists_alias.rb +82 -0
  101. data/lib/opensearch/api/actions/indices/exists_index_template.rb +72 -0
  102. data/lib/opensearch/api/actions/indices/exists_template.rb +75 -0
  103. data/lib/opensearch/api/actions/indices/field_usage_stats.rb +74 -0
  104. data/lib/opensearch/api/actions/indices/flush.rb +74 -0
  105. data/lib/opensearch/api/actions/indices/forcemerge.rb +76 -0
  106. data/lib/opensearch/api/actions/indices/get.rb +78 -0
  107. data/lib/opensearch/api/actions/indices/get_alias.rb +79 -0
  108. data/lib/opensearch/api/actions/indices/get_field_mapping.rb +83 -0
  109. data/lib/opensearch/api/actions/indices/get_index_template.rb +72 -0
  110. data/lib/opensearch/api/actions/indices/get_mapping.rb +81 -0
  111. data/lib/opensearch/api/actions/indices/get_settings.rb +87 -0
  112. data/lib/opensearch/api/actions/indices/get_template.rb +72 -0
  113. data/lib/opensearch/api/actions/indices/get_upgrade.rb +75 -0
  114. data/lib/opensearch/api/actions/indices/open.rb +76 -0
  115. data/lib/opensearch/api/actions/indices/params_registry.rb +69 -0
  116. data/lib/opensearch/api/actions/indices/put_alias.rb +73 -0
  117. data/lib/opensearch/api/actions/indices/put_index_template.rb +72 -0
  118. data/lib/opensearch/api/actions/indices/put_mapping.rb +82 -0
  119. data/lib/opensearch/api/actions/indices/put_settings.rb +83 -0
  120. data/lib/opensearch/api/actions/indices/put_template.rb +72 -0
  121. data/lib/opensearch/api/actions/indices/recovery.rb +68 -0
  122. data/lib/opensearch/api/actions/indices/refresh.rb +70 -0
  123. data/lib/opensearch/api/actions/indices/resolve_index.rb +68 -0
  124. data/lib/opensearch/api/actions/indices/rollover.rb +81 -0
  125. data/lib/opensearch/api/actions/indices/segments.rb +72 -0
  126. data/lib/opensearch/api/actions/indices/shard_stores.rb +72 -0
  127. data/lib/opensearch/api/actions/indices/shrink.rb +77 -0
  128. data/lib/opensearch/api/actions/indices/simulate_index_template.rb +71 -0
  129. data/lib/opensearch/api/actions/indices/simulate_template.rb +73 -0
  130. data/lib/opensearch/api/actions/indices/split.rb +77 -0
  131. data/lib/opensearch/api/actions/indices/stats.rb +100 -0
  132. data/lib/opensearch/api/actions/indices/update_aliases.rb +66 -0
  133. data/lib/opensearch/api/actions/indices/upgrade.rb +79 -0
  134. data/lib/opensearch/api/actions/indices/validate_query.rb +99 -0
  135. data/{Gemfile → lib/opensearch/api/actions/info.rb} +19 -8
  136. data/lib/opensearch/api/actions/ingest/delete_pipeline.rb +68 -0
  137. data/lib/opensearch/api/actions/ingest/geo_ip_stats.rb +51 -0
  138. data/lib/opensearch/api/actions/ingest/get_pipeline.rb +70 -0
  139. data/lib/opensearch/api/actions/ingest/params_registry.rb +69 -0
  140. data/lib/opensearch/api/actions/ingest/processor_grok.rb +51 -0
  141. data/lib/opensearch/api/actions/ingest/put_pipeline.rb +70 -0
  142. data/lib/opensearch/api/actions/ingest/simulate.rb +69 -0
  143. data/lib/opensearch/api/actions/mget.rb +86 -0
  144. data/lib/opensearch/api/actions/msearch.rb +105 -0
  145. data/lib/opensearch/api/actions/msearch_template.rb +89 -0
  146. data/lib/opensearch/api/actions/mtermvectors.rb +102 -0
  147. data/lib/opensearch/api/actions/nodes/hot_threads.rb +81 -0
  148. data/lib/opensearch/api/actions/nodes/info.rb +75 -0
  149. data/lib/opensearch/api/actions/nodes/params_registry.rb +69 -0
  150. data/lib/opensearch/api/actions/nodes/reload_secure_settings.rb +67 -0
  151. data/lib/opensearch/api/actions/nodes/shutdown.rb +65 -0
  152. data/lib/opensearch/api/actions/nodes/stats.rb +96 -0
  153. data/lib/opensearch/api/actions/nodes/usage.rb +73 -0
  154. data/lib/opensearch/api/actions/params_registry.rb +67 -0
  155. data/lib/opensearch/api/actions/ping.rb +54 -0
  156. data/lib/opensearch/api/actions/put_script.rb +76 -0
  157. data/lib/opensearch/api/actions/rank_eval.rb +77 -0
  158. data/lib/opensearch/api/actions/reindex.rb +76 -0
  159. data/lib/opensearch/api/actions/reindex_rethrottle.rb +62 -0
  160. data/{spec/integration/validation_integration_spec.rb → lib/opensearch/api/actions/remote/info.rb} +17 -11
  161. data/lib/opensearch/api/actions/remote_store/restore.rb +43 -0
  162. data/lib/opensearch/api/actions/render_search_template.rb +62 -0
  163. data/lib/opensearch/api/actions/scripts_painless_execute.rb +59 -0
  164. data/lib/opensearch/api/actions/scroll.rb +78 -0
  165. data/lib/opensearch/api/actions/search.rb +159 -0
  166. data/lib/opensearch/api/actions/search_shards.rb +74 -0
  167. data/lib/opensearch/api/actions/search_template.rb +96 -0
  168. data/lib/opensearch/api/actions/security/change_password.rb +39 -0
  169. data/lib/opensearch/api/actions/security/create_action_group.rb +42 -0
  170. data/lib/opensearch/api/actions/security/create_role.rb +43 -0
  171. data/lib/opensearch/api/actions/security/create_role_mapping.rb +43 -0
  172. data/lib/opensearch/api/actions/security/create_tenant.rb +42 -0
  173. data/lib/opensearch/api/actions/security/create_user.rb +43 -0
  174. data/lib/opensearch/api/actions/security/delete_action_group.rb +41 -0
  175. data/lib/opensearch/api/actions/security/delete_distinguished_names.rb +41 -0
  176. data/lib/opensearch/api/actions/security/delete_role.rb +41 -0
  177. data/lib/opensearch/api/actions/security/delete_role_mapping.rb +41 -0
  178. data/lib/opensearch/api/actions/security/delete_tenant.rb +41 -0
  179. data/lib/opensearch/api/actions/security/delete_user.rb +41 -0
  180. data/lib/opensearch/api/actions/security/flush_cache.rb +36 -0
  181. data/lib/opensearch/api/actions/security/get_account_details.rb +36 -0
  182. data/lib/opensearch/api/actions/security/get_action_group.rb +41 -0
  183. data/lib/opensearch/api/actions/security/get_action_groups.rb +36 -0
  184. data/lib/opensearch/api/actions/security/get_audit_configuration.rb +36 -0
  185. data/lib/opensearch/api/actions/security/get_certificates.rb +36 -0
  186. data/lib/opensearch/api/actions/security/get_configuration.rb +36 -0
  187. data/lib/opensearch/api/actions/security/get_distinguished_names.rb +39 -0
  188. data/lib/opensearch/api/actions/security/get_role.rb +41 -0
  189. data/lib/opensearch/api/actions/security/get_role_mapping.rb +41 -0
  190. data/lib/opensearch/api/actions/security/get_role_mappings.rb +36 -0
  191. data/lib/opensearch/api/actions/security/get_roles.rb +36 -0
  192. data/lib/opensearch/api/actions/security/get_tenant.rb +41 -0
  193. data/lib/opensearch/api/actions/security/get_tenants.rb +36 -0
  194. data/lib/opensearch/api/actions/security/get_user.rb +41 -0
  195. data/lib/opensearch/api/actions/security/get_users.rb +36 -0
  196. data/lib/opensearch/api/actions/security/health.rb +36 -0
  197. data/lib/opensearch/api/actions/security/patch_action_group.rb +42 -0
  198. data/lib/opensearch/api/actions/security/patch_action_groups.rb +37 -0
  199. data/lib/opensearch/api/actions/security/patch_audit_configuration.rb +39 -0
  200. data/lib/opensearch/api/actions/security/patch_configuration.rb +39 -0
  201. data/lib/opensearch/api/actions/security/patch_distinguished_names.rb +39 -0
  202. data/lib/opensearch/api/actions/security/patch_role.rb +43 -0
  203. data/lib/opensearch/api/actions/security/patch_role_mapping.rb +43 -0
  204. data/lib/opensearch/api/actions/security/patch_role_mappings.rb +39 -0
  205. data/lib/opensearch/api/actions/security/patch_roles.rb +39 -0
  206. data/lib/opensearch/api/actions/security/patch_tenant.rb +43 -0
  207. data/lib/opensearch/api/actions/security/patch_tenants.rb +39 -0
  208. data/lib/opensearch/api/actions/security/patch_user.rb +43 -0
  209. data/lib/opensearch/api/actions/security/patch_users.rb +39 -0
  210. data/lib/opensearch/api/actions/security/reload_http_certificates.rb +36 -0
  211. data/lib/opensearch/api/actions/security/reload_transport_certificates.rb +36 -0
  212. data/lib/opensearch/api/actions/security/update_audit_configuration.rb +39 -0
  213. data/lib/opensearch/api/actions/security/update_configuration.rb +39 -0
  214. data/lib/opensearch/api/actions/security/update_distinguished_names.rb +42 -0
  215. data/lib/opensearch/api/actions/shutdown/delete_node.rb +60 -0
  216. data/lib/opensearch/api/actions/shutdown/get_node.rb +62 -0
  217. data/lib/opensearch/api/actions/shutdown/params_registry.rb +69 -0
  218. data/lib/opensearch/api/actions/shutdown/put_node.rb +62 -0
  219. data/lib/opensearch/api/actions/snapshot/cleanup_repository.rb +68 -0
  220. data/lib/opensearch/api/actions/snapshot/clone.rb +76 -0
  221. data/lib/opensearch/api/actions/snapshot/create.rb +73 -0
  222. data/lib/opensearch/api/actions/snapshot/create_repository.rb +72 -0
  223. data/lib/opensearch/api/actions/snapshot/delete.rb +74 -0
  224. data/lib/opensearch/api/actions/snapshot/delete_repository.rb +72 -0
  225. data/lib/opensearch/api/actions/snapshot/get.rb +82 -0
  226. data/lib/opensearch/api/actions/snapshot/get_features.rb +61 -0
  227. data/lib/opensearch/api/actions/snapshot/get_repository.rb +73 -0
  228. data/lib/opensearch/api/actions/snapshot/params_registry.rb +69 -0
  229. data/lib/opensearch/api/actions/snapshot/repository_analyze.rb +84 -0
  230. data/lib/opensearch/api/actions/snapshot/restore.rb +73 -0
  231. data/lib/opensearch/api/actions/snapshot/status.rb +79 -0
  232. data/lib/opensearch/api/actions/snapshot/verify_repository.rb +68 -0
  233. data/lib/opensearch/api/actions/tasks/cancel.rb +76 -0
  234. data/lib/opensearch/api/actions/tasks/get.rb +68 -0
  235. data/lib/opensearch/api/actions/tasks/list.rb +75 -0
  236. data/lib/opensearch/api/actions/tasks/params_registry.rb +69 -0
  237. data/lib/opensearch/api/actions/termvectors.rb +108 -0
  238. data/lib/opensearch/api/actions/update.rb +99 -0
  239. data/lib/opensearch/api/actions/update_by_query.rb +137 -0
  240. data/lib/opensearch/api/actions/update_by_query_rethrottle.rb +62 -0
  241. data/lib/opensearch/api/namespace/cat.rb +47 -0
  242. data/lib/opensearch/api/namespace/cluster.rb +47 -0
  243. data/lib/opensearch/api/namespace/common.rb +72 -0
  244. data/lib/opensearch/api/namespace/dangling_indices.rb +47 -0
  245. data/lib/opensearch/api/namespace/features.rb +47 -0
  246. data/lib/opensearch/api/namespace/http.rb +30 -0
  247. data/lib/opensearch/api/namespace/indices.rb +47 -0
  248. data/lib/opensearch/api/namespace/ingest.rb +47 -0
  249. data/lib/opensearch/api/namespace/nodes.rb +47 -0
  250. data/lib/opensearch/api/namespace/remote.rb +47 -0
  251. data/lib/opensearch/api/namespace/remote_store.rb +30 -0
  252. data/lib/opensearch/api/namespace/security.rb +30 -0
  253. data/lib/opensearch/api/namespace/shutdown.rb +47 -0
  254. data/lib/opensearch/api/namespace/snapshot.rb +47 -0
  255. data/lib/opensearch/api/namespace/tasks.rb +47 -0
  256. data/lib/opensearch/api/utils.rb +296 -0
  257. data/lib/opensearch/api.rb +104 -0
  258. data/lib/opensearch/dsl/search/aggregation.rb +112 -0
  259. data/lib/opensearch/dsl/search/aggregations/avg.rb +49 -0
  260. data/lib/opensearch/dsl/search/aggregations/cardinality.rb +56 -0
  261. data/lib/opensearch/dsl/search/aggregations/children.rb +63 -0
  262. data/lib/opensearch/dsl/search/aggregations/composite.rb +68 -0
  263. data/lib/opensearch/dsl/search/aggregations/date_histogram.rb +64 -0
  264. data/lib/opensearch/dsl/search/aggregations/date_range.rb +59 -0
  265. data/lib/opensearch/dsl/search/aggregations/extended_stats.rb +48 -0
  266. data/lib/opensearch/dsl/search/aggregations/filter.rb +54 -0
  267. data/lib/opensearch/dsl/search/aggregations/filters.rb +59 -0
  268. data/lib/opensearch/dsl/search/aggregations/geo_bounds.rb +68 -0
  269. data/lib/opensearch/dsl/search/aggregations/geo_distance.rb +63 -0
  270. data/lib/opensearch/dsl/search/aggregations/geohash_grid.rb +59 -0
  271. data/lib/opensearch/dsl/search/aggregations/global.rb +52 -0
  272. data/lib/opensearch/dsl/search/aggregations/histogram.rb +59 -0
  273. data/lib/opensearch/dsl/search/aggregations/ip_range.rb +55 -0
  274. data/lib/opensearch/dsl/search/aggregations/max.rb +49 -0
  275. data/lib/opensearch/dsl/search/aggregations/min.rb +49 -0
  276. data/lib/opensearch/dsl/search/aggregations/missing.rb +59 -0
  277. data/lib/opensearch/dsl/search/aggregations/nested.rb +57 -0
  278. data/lib/opensearch/dsl/search/aggregations/percentile_ranks.rb +58 -0
  279. data/lib/opensearch/dsl/search/aggregations/percentiles.rb +57 -0
  280. data/lib/opensearch/dsl/search/aggregations/pipeline/avg_bucket.rb +58 -0
  281. data/lib/opensearch/dsl/search/aggregations/pipeline/bucket_script.rb +60 -0
  282. data/lib/opensearch/dsl/search/aggregations/pipeline/bucket_selector.rb +59 -0
  283. data/lib/opensearch/dsl/search/aggregations/pipeline/bucket_sort.rb +111 -0
  284. data/lib/opensearch/dsl/search/aggregations/pipeline/cumulative_sum.rb +57 -0
  285. data/lib/opensearch/dsl/search/aggregations/pipeline/derivative.rb +58 -0
  286. data/lib/opensearch/dsl/search/aggregations/pipeline/extended_stats_bucket.rb +58 -0
  287. data/lib/opensearch/dsl/search/aggregations/pipeline/max_bucket.rb +58 -0
  288. data/lib/opensearch/dsl/search/aggregations/pipeline/min_bucket.rb +58 -0
  289. data/lib/opensearch/dsl/search/aggregations/pipeline/moving_avg.rb +66 -0
  290. data/lib/opensearch/dsl/search/aggregations/pipeline/percentiles_bucket.rb +60 -0
  291. data/lib/opensearch/dsl/search/aggregations/pipeline/serial_diff.rb +60 -0
  292. data/lib/opensearch/dsl/search/aggregations/pipeline/stats_bucket.rb +58 -0
  293. data/lib/opensearch/dsl/search/aggregations/pipeline/sum_bucket.rb +58 -0
  294. data/lib/opensearch/dsl/search/aggregations/range.rb +77 -0
  295. data/lib/opensearch/dsl/search/aggregations/reverse_nested.rb +61 -0
  296. data/lib/opensearch/dsl/search/aggregations/scripted_metric.rb +63 -0
  297. data/lib/opensearch/dsl/search/aggregations/significant_terms.rb +69 -0
  298. data/lib/opensearch/dsl/search/aggregations/stats.rb +61 -0
  299. data/lib/opensearch/dsl/search/aggregations/sum.rb +49 -0
  300. data/lib/opensearch/dsl/search/aggregations/terms.rb +66 -0
  301. data/lib/opensearch/dsl/search/aggregations/top_hits.rb +59 -0
  302. data/lib/opensearch/dsl/search/aggregations/value_count.rb +49 -0
  303. data/lib/opensearch/dsl/search/base_aggregation_component.rb +83 -0
  304. data/lib/opensearch/dsl/search/base_component.rb +191 -0
  305. data/lib/opensearch/dsl/search/base_compound_filter_component.rb +124 -0
  306. data/lib/opensearch/dsl/search/filter.rb +82 -0
  307. data/lib/opensearch/dsl/search/filters/and.rb +70 -0
  308. data/lib/opensearch/dsl/search/filters/bool.rb +103 -0
  309. data/lib/opensearch/dsl/search/filters/exists.rb +56 -0
  310. data/lib/opensearch/dsl/search/filters/geo_bounding_box.rb +69 -0
  311. data/lib/opensearch/dsl/search/filters/geo_distance.rb +81 -0
  312. data/lib/opensearch/dsl/search/filters/geo_distance_range.rb +56 -0
  313. data/lib/opensearch/dsl/search/filters/geo_polygon.rb +65 -0
  314. data/lib/opensearch/dsl/search/filters/geo_shape.rb +59 -0
  315. data/lib/opensearch/dsl/search/filters/geohash_cell.rb +71 -0
  316. data/lib/opensearch/dsl/search/filters/has_child.rb +98 -0
  317. data/lib/opensearch/dsl/search/filters/has_parent.rb +97 -0
  318. data/lib/opensearch/dsl/search/filters/ids.rb +56 -0
  319. data/lib/opensearch/dsl/search/filters/indices.rb +101 -0
  320. data/lib/opensearch/dsl/search/filters/limit.rb +55 -0
  321. data/lib/opensearch/dsl/search/filters/match_all.rb +52 -0
  322. data/lib/opensearch/dsl/search/filters/missing.rb +58 -0
  323. data/lib/opensearch/dsl/search/filters/nested.rb +91 -0
  324. data/lib/opensearch/dsl/search/filters/not.rb +98 -0
  325. data/lib/opensearch/dsl/search/filters/or.rb +70 -0
  326. data/lib/opensearch/dsl/search/filters/prefix.rb +53 -0
  327. data/lib/opensearch/dsl/search/filters/query.rb +77 -0
  328. data/lib/opensearch/dsl/search/filters/range.rb +63 -0
  329. data/lib/opensearch/dsl/search/filters/regexp.rb +58 -0
  330. data/lib/opensearch/dsl/search/filters/script.rb +56 -0
  331. data/lib/opensearch/dsl/search/filters/term.rb +55 -0
  332. data/lib/opensearch/dsl/search/filters/terms.rb +56 -0
  333. data/lib/opensearch/dsl/search/filters/type.rb +58 -0
  334. data/lib/opensearch/dsl/search/highlight.rb +117 -0
  335. data/lib/opensearch/dsl/search/options.rb +80 -0
  336. data/lib/opensearch/dsl/search/queries/bool.rb +110 -0
  337. data/lib/opensearch/dsl/search/queries/boosting.rb +57 -0
  338. data/lib/opensearch/dsl/search/queries/common.rb +62 -0
  339. data/lib/opensearch/dsl/search/queries/constant_score.rb +90 -0
  340. data/lib/opensearch/dsl/search/queries/dis_max.rb +59 -0
  341. data/lib/opensearch/dsl/search/queries/exists.rb +68 -0
  342. data/lib/opensearch/dsl/search/queries/filtered.rb +101 -0
  343. data/lib/opensearch/dsl/search/queries/function_score.rb +122 -0
  344. data/lib/opensearch/dsl/search/queries/fuzzy.rb +69 -0
  345. data/lib/opensearch/dsl/search/queries/fuzzy_like_this.rb +61 -0
  346. data/lib/opensearch/dsl/search/queries/fuzzy_like_this_field.rb +60 -0
  347. data/lib/opensearch/dsl/search/queries/geo_shape.rb +54 -0
  348. data/lib/opensearch/dsl/search/queries/has_child.rb +82 -0
  349. data/lib/opensearch/dsl/search/queries/has_parent.rb +82 -0
  350. data/lib/opensearch/dsl/search/queries/ids.rb +52 -0
  351. data/lib/opensearch/dsl/search/queries/indices.rb +58 -0
  352. data/lib/opensearch/dsl/search/queries/match.rb +67 -0
  353. data/lib/opensearch/dsl/search/queries/match_all.rb +50 -0
  354. data/lib/opensearch/dsl/search/queries/match_phrase.rb +56 -0
  355. data/lib/opensearch/dsl/search/queries/match_phrase_prefix.rb +55 -0
  356. data/lib/opensearch/dsl/search/queries/more_like_this.rb +88 -0
  357. data/lib/opensearch/dsl/search/queries/multi_match.rb +69 -0
  358. data/lib/opensearch/dsl/search/queries/nested.rb +80 -0
  359. data/lib/opensearch/dsl/search/queries/prefix.rb +54 -0
  360. data/lib/opensearch/dsl/search/queries/query_string.rb +75 -0
  361. data/lib/opensearch/dsl/search/queries/range.rb +71 -0
  362. data/lib/opensearch/dsl/search/queries/regexp.rb +55 -0
  363. data/lib/opensearch/dsl/search/queries/simple_query_string.rb +64 -0
  364. data/lib/opensearch/dsl/search/queries/span_first.rb +52 -0
  365. data/lib/opensearch/dsl/search/queries/span_multi.rb +52 -0
  366. data/lib/opensearch/dsl/search/queries/span_near.rb +56 -0
  367. data/lib/opensearch/dsl/search/queries/span_not.rb +57 -0
  368. data/lib/opensearch/dsl/search/queries/span_or.rb +52 -0
  369. data/lib/opensearch/dsl/search/queries/span_term.rb +50 -0
  370. data/lib/opensearch/dsl/search/queries/template.rb +55 -0
  371. data/lib/opensearch/dsl/search/queries/term.rb +50 -0
  372. data/lib/opensearch/dsl/search/queries/terms.rb +51 -0
  373. data/lib/opensearch/dsl/search/queries/top_children.rb +82 -0
  374. data/lib/opensearch/dsl/search/queries/wildcard.rb +54 -0
  375. data/lib/opensearch/dsl/search/query.rb +82 -0
  376. data/lib/opensearch/dsl/search/sort.rb +83 -0
  377. data/lib/opensearch/dsl/search/suggest.rb +52 -0
  378. data/lib/opensearch/dsl/search.rb +282 -0
  379. data/lib/opensearch/dsl/utils.rb +49 -0
  380. data/lib/opensearch/dsl.rb +69 -0
  381. data/lib/opensearch/transport/client.rb +362 -0
  382. data/lib/opensearch/transport/redacted.rb +82 -0
  383. data/lib/opensearch/transport/transport/base.rb +453 -0
  384. data/lib/opensearch/transport/transport/connections/collection.rb +134 -0
  385. data/lib/opensearch/transport/transport/connections/connection.rb +168 -0
  386. data/lib/opensearch/transport/transport/connections/selector.rb +100 -0
  387. data/lib/opensearch/transport/transport/errors.rb +97 -0
  388. data/lib/opensearch/transport/transport/http/curb.rb +139 -0
  389. data/lib/opensearch/transport/transport/http/faraday.rb +101 -0
  390. data/lib/opensearch/transport/transport/http/manticore.rb +188 -0
  391. data/lib/opensearch/transport/transport/loggable.rb +92 -0
  392. data/lib/opensearch/transport/transport/response.rb +47 -0
  393. data/lib/opensearch/transport/transport/serializer/multi_json.rb +61 -0
  394. data/lib/opensearch/transport/transport/sniffer.rb +110 -0
  395. data/lib/opensearch/transport.rb +44 -0
  396. data/lib/opensearch/version.rb +1 -1
  397. data/lib/opensearch-dsl.rb +27 -0
  398. data/lib/opensearch.rb +13 -13
  399. data/opensearch-ruby.gemspec +69 -0
  400. data/spec/spec_helper.rb +95 -4
  401. data/test/dsl/integration/search_aggregation_children_test.rb +91 -0
  402. data/test/dsl/integration/search_aggregation_geo_test.rb +112 -0
  403. data/test/dsl/integration/search_aggregation_nested_test.rb +129 -0
  404. data/test/dsl/integration/search_aggregations_test.rb +288 -0
  405. data/test/dsl/integration/search_filters_test.rb +290 -0
  406. data/test/dsl/integration/search_options_test.rb +54 -0
  407. data/test/dsl/integration/search_query_test.rb +98 -0
  408. data/test/dsl/integration/search_size_from_test.rb +71 -0
  409. data/test/dsl/integration/search_sort_test.rb +57 -0
  410. data/test/dsl/integration/search_suggest_test.rb +107 -0
  411. data/test/dsl/integration/search_test.rb +81 -0
  412. data/test/dsl/test_helper.rb +95 -0
  413. data/test/dsl/unit/dsl_test.rb +44 -0
  414. data/test/dsl/unit/search_aggregation_test.rb +96 -0
  415. data/test/dsl/unit/search_base_aggregation_component_test.rb +66 -0
  416. data/test/dsl/unit/search_base_component_test.rb +210 -0
  417. data/test/dsl/unit/search_filter_test.rb +84 -0
  418. data/test/dsl/unit/search_highlight_test.rb +103 -0
  419. data/test/dsl/unit/search_options_test.rb +114 -0
  420. data/test/dsl/unit/search_query_test.rb +88 -0
  421. data/test/dsl/unit/search_size_from_test.rb +68 -0
  422. data/test/dsl/unit/search_sort_test.rb +91 -0
  423. data/test/dsl/unit/search_suggest_test.rb +46 -0
  424. data/test/dsl/unit/search_test.rb +268 -0
  425. data/test/dsl/unit/utils_test.rb +47 -0
  426. data/test/transport/integration/transport_test.rb +117 -0
  427. data/test/transport/profile/client_benchmark_test.rb +141 -0
  428. data/test/transport/test_helper.rb +97 -0
  429. data/test/transport/unit/connection_test.rb +145 -0
  430. data/test/transport/unit/response_test.rb +46 -0
  431. data/{spec/integration/client_integration_spec.rb → test/transport/unit/serializer_test.rb} +10 -27
  432. data/test/transport/unit/transport_base_test.rb +673 -0
  433. data/test/transport/unit/transport_curb_test.rb +143 -0
  434. data/test/transport/unit/transport_faraday_test.rb +237 -0
  435. data/test/transport/unit/transport_manticore_test.rb +191 -0
  436. data.tar.gz.sig +0 -0
  437. metadata +502 -187
  438. metadata.gz.sig +0 -0
  439. data/.gitignore +0 -21
  440. data/opensearch.gemspec +0 -81
  441. data/spec/unit/opensearch_product_validation_spec.rb +0 -198
  442. /data/{LICENSE → LICENSE.txt} +0 -0
@@ -0,0 +1,103 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A compound filter which matches documents based on combinations of filters
32
+ #
33
+ # @example Defining a bool filter with multiple conditions
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # bool do
40
+ # must do
41
+ # term category: 'men'
42
+ # end
43
+ #
44
+ # must do
45
+ # term size: 'xxl'
46
+ # end
47
+ #
48
+ # should do
49
+ # term color: 'red'
50
+ # end
51
+ #
52
+ # must_not do
53
+ # term manufacturer: 'evil'
54
+ # end
55
+ # end
56
+ # end
57
+ # end
58
+ # end
59
+ # end
60
+ #
61
+ # See the integration test for a working example.
62
+ #
63
+ #
64
+ class Bool
65
+ include BaseComponent
66
+
67
+ def must(*args, &block)
68
+ @hash[name][:must] ||= []
69
+ value = args.empty? ? Filter.new(*args, &block).to_hash : args.first.to_hash
70
+ @hash[name][:must].push(value).flatten! unless @hash[name][:must].include?(value)
71
+ self
72
+ end
73
+
74
+ def must_not(*args, &block)
75
+ @hash[name][:must_not] ||= []
76
+ value = args.empty? ? Filter.new(*args, &block).to_hash : args.first.to_hash
77
+ @hash[name][:must_not].push(value).flatten! unless @hash[name][:must_not].include?(value)
78
+ self
79
+ end
80
+
81
+ def should(*args, &block)
82
+ @hash[name][:should] ||= []
83
+ value = args.empty? ? Filter.new(*args, &block).to_hash : args.first.to_hash
84
+ @hash[name][:should].push(value).flatten! unless @hash[name][:should].include?(value)
85
+ self
86
+ end
87
+
88
+ def to_hash
89
+ @hash[name].update(@args.to_hash) if @args.respond_to?(:to_hash)
90
+
91
+ if @block
92
+ call
93
+ else
94
+ @hash[name] = @args unless @args.nil? || @args.empty?
95
+ end
96
+
97
+ @hash
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,56 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns documents which have a non-`null` value in the specified field
32
+ # (ie. the reverse of the `missing` filter)
33
+ #
34
+ # @example
35
+ #
36
+ # search do
37
+ # query do
38
+ # filtered do
39
+ # filter do
40
+ # exists field: 'occupation'
41
+ # end
42
+ # end
43
+ # end
44
+ # end
45
+ #
46
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-exists-filter.html
47
+ #
48
+ class Exists
49
+ include BaseComponent
50
+
51
+ option_method :field
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,69 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns documents which fall into a "box" of the specified geographical coordinates
32
+ #
33
+ # @example
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # geo_bounding_box :location do
40
+ # top_right "50.1815123678,14.7149200439"
41
+ # bottom_left "49.9415476869,14.2162566185"
42
+ # end
43
+ # end
44
+ # end
45
+ # end
46
+ # end
47
+ #
48
+ # See the integration test for a working example.
49
+ #
50
+ # Use eg. <http://boundingbox.klokantech.com> to visually define the bounding box.
51
+ #
52
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/geo-bounding-box.html
53
+ #
54
+ class GeoBoundingBox
55
+ include BaseComponent
56
+
57
+ option_method :top_left
58
+ option_method :bottom_right
59
+ option_method :top_right
60
+ option_method :bottom_left
61
+ option_method :top
62
+ option_method :left
63
+ option_method :bottom
64
+ option_method :right
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,81 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns documents which fall into a specified geographical distance
32
+ #
33
+ # @example Define the filter with a hash
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # geo_distance location: '50.090223,14.399590', distance: '5km'
40
+ # end
41
+ # end
42
+ # end
43
+ # end
44
+ #
45
+ # @example Define the filter with a block
46
+ #
47
+ # search do
48
+ # query do
49
+ # filtered do
50
+ # filter do
51
+ # geo_distance :location do
52
+ # lat '50.090223'
53
+ # lon '14.399590'
54
+ # distance '5km'
55
+ # end
56
+ # end
57
+ # end
58
+ # end
59
+ # end
60
+ #
61
+ # See the integration test for a working example.
62
+ #
63
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/geo-distance.html
64
+ #
65
+ class GeoDistance
66
+ include BaseComponent
67
+
68
+ option_method :distance, ->(*args) { @hash[name.to_sym].update distance: args.pop }
69
+ option_method :distance_type, ->(*args) { @hash[name.to_sym].update distance_type: args.pop }
70
+ option_method :lat, ->(*args) { @hash[name.to_sym][@args].update lat: args.pop }
71
+ option_method :lon, ->(*args) { @hash[name.to_sym][@args].update lon: args.pop }
72
+
73
+ def initialize(*args, &block)
74
+ super
75
+ @hash[name.to_sym] = { @args => {} } unless @args.empty?
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,56 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns documents which fall into a specified geographical distance range
32
+ #
33
+ # @example Define the filter with a hash
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # geo_distance location: '50.090223,14.399590', gte: '2km', lte: '5km'
40
+ # end
41
+ # end
42
+ # end
43
+ # end
44
+ #
45
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/geo-distance.html
46
+ #
47
+ class GeoDistanceRange
48
+ include BaseComponent
49
+
50
+ option_method :lat
51
+ option_method :lon
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,65 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns documents which fall into a specified geographical polygon
32
+ #
33
+ # @example
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # geo_polygon :location do
40
+ # points [
41
+ # [14.2244355,49.9419006],
42
+ # [14.2244355,50.1774301],
43
+ # [14.7067869,50.1774301],
44
+ # [14.7067869,49.9419006],
45
+ # [14.2244355,49.9419006]
46
+ # ]
47
+ # end
48
+ # end
49
+ # end
50
+ # end
51
+ # end
52
+ #
53
+ # See the integration test for a working example.
54
+ #
55
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-geo-polygon-filter.html
56
+ #
57
+ class GeoPolygon
58
+ include BaseComponent
59
+
60
+ option_method :points
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,59 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns documents which fall into a specified geographical shape
32
+ #
33
+ # @example
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # geo_shape :location do
40
+ # shape type: 'envelope',
41
+ # coordinates: [[14.2162566185,49.9415476869], [14.7149200439,50.1815123678]]
42
+ # end
43
+ # end
44
+ # end
45
+ # end
46
+ # end
47
+ #
48
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-geo-shape-filter.html
49
+ #
50
+ class GeoShape
51
+ include BaseComponent
52
+
53
+ option_method :shape
54
+ option_method :indexed_shape
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,71 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which translates lat/lon values into a geohash with the specified precision
32
+ # and returns all documents which fall into it
33
+ #
34
+ # @example
35
+ #
36
+ # search do
37
+ # query do
38
+ # filtered do
39
+ # filter do
40
+ # geohash_cell :location do
41
+ # lat '50.090223'
42
+ # lon '14.399590'
43
+ # precision '5km'
44
+ # neighbors true
45
+ # end
46
+ # end
47
+ # end
48
+ # end
49
+ # end
50
+ #
51
+ # See the integration test for a working example.
52
+ #
53
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/geohash-cell-filter.html
54
+ #
55
+ class GeohashCell
56
+ include BaseComponent
57
+
58
+ option_method :precision, ->(*args) { @hash[name.to_sym].update precision: args.pop }
59
+ option_method :lat, ->(*args) { @hash[name.to_sym][@args].update lat: args.pop }
60
+ option_method :lon, ->(*args) { @hash[name.to_sym][@args].update lon: args.pop }
61
+ option_method :neighbors, ->(*args) { @hash[name.to_sym].update neighbors: args.pop }
62
+
63
+ def initialize(*args, &block)
64
+ super
65
+ @hash[name.to_sym] = { @args => {} } unless @args.empty?
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,98 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ module OpenSearch
28
+ module DSL
29
+ module Search
30
+ module Filters
31
+ # A filter which returns parent documents for children documents matching a query or a filter
32
+ #
33
+ # @example Return articles where John has commented
34
+ #
35
+ # search do
36
+ # query do
37
+ # filtered do
38
+ # filter do
39
+ # has_child do
40
+ # type 'comment'
41
+ # query do
42
+ # match author: 'John'
43
+ # end
44
+ # end
45
+ # end
46
+ # end
47
+ # end
48
+ # end
49
+ #
50
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-has-child-filter.html
51
+ #
52
+ class HasChild
53
+ include BaseComponent
54
+
55
+ option_method :type
56
+ option_method :min_children
57
+ option_method :max_children
58
+ option_method :inner_hits
59
+
60
+ # DSL method for building the `query` part of the query definition
61
+ #
62
+ # @return [self]
63
+ #
64
+ def query(*args, &block)
65
+ @query = block ? OpenSearch::DSL::Search::Query.new(*args, &block) : args.first
66
+ self
67
+ end
68
+
69
+ # DSL method for building the `filter` part of the query definition
70
+ #
71
+ # @return [self]
72
+ #
73
+ def filter(*args, &block)
74
+ @filter = block ? OpenSearch::DSL::Search::Filter.new(*args, &block) : args.first
75
+ self
76
+ end
77
+
78
+ # Converts the query definition to a Hash
79
+ #
80
+ # @return [Hash]
81
+ #
82
+ def to_hash
83
+ hash = super
84
+ if @query
85
+ _query = @query.respond_to?(:to_hash) ? @query.to_hash : @query
86
+ hash[name].update(query: _query)
87
+ end
88
+ if @filter
89
+ _filter = @filter.respond_to?(:to_hash) ? @filter.to_hash : @filter
90
+ hash[name].update(filter: _filter)
91
+ end
92
+ hash
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end