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,110 @@
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 Queries
31
+ # A compound query which matches documents based on combinations of queries
32
+ #
33
+ # @example Defining a bool query with multiple conditions
34
+ #
35
+ # search do
36
+ # query do
37
+ # bool do
38
+ # must do
39
+ # term category: 'men'
40
+ # end
41
+ #
42
+ # must do
43
+ # term size: 'xxl'
44
+ # end
45
+ #
46
+ # should do
47
+ # term color: 'red'
48
+ # end
49
+ #
50
+ # must_not do
51
+ # term manufacturer: 'evil'
52
+ # end
53
+ # end
54
+ # end
55
+ # end
56
+ #
57
+ # See the integration test for a working example.
58
+ #
59
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-bool-query.html
60
+ #
61
+ class Bool
62
+ include BaseComponent
63
+
64
+ option_method :minimum_should_match
65
+ option_method :boost
66
+
67
+ def must(*args, &block)
68
+ @hash[name][:must] ||= []
69
+ value = args.empty? ? Query.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? ? Query.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? ? Query.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 filter(*args, &block)
89
+ @hash[name][:filter] ||= []
90
+ if (filter = block ? Filter.new(*args, &block) : args.first)
91
+ @hash[name][:filter] << filter.to_hash
92
+ end
93
+ self
94
+ end
95
+
96
+ def to_hash
97
+ @hash[name].update(@args.to_hash) if @args.respond_to?(:to_hash)
98
+
99
+ if @block
100
+ call
101
+ else
102
+ @hash[name] = @args unless @args.nil? || @args.empty?
103
+ end
104
+ @hash
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,57 @@
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 Queries
31
+ # A query which will decrease the score of documents matching the `negative` query
32
+ #
33
+ # @example
34
+ #
35
+ # search do
36
+ # query do
37
+ # boosting do
38
+ # positive terms: { amenities: ['wifi', 'pets'] }
39
+ # negative terms: { amenities: ['pool'] }
40
+ # negative_boost 0.5
41
+ # end
42
+ # end
43
+ # end
44
+ #
45
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-boosting-query.html
46
+ #
47
+ class Boosting
48
+ include BaseComponent
49
+
50
+ option_method :positive
51
+ option_method :negative
52
+ option_method :negative_boost
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,62 @@
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 Queries
31
+ # A query which executes the search for low frequency terms first, and high frequency ("common")
32
+ # terms second
33
+ #
34
+ # @example
35
+ #
36
+ # search do
37
+ # query do
38
+ # common :body do
39
+ # query 'shakespeare to be or not to be'
40
+ # end
41
+ # end
42
+ # end
43
+ #
44
+ # This query is frequently used when a stopwords-based approach loses too much recall and/or precision.
45
+ #
46
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-common-terms-query.html
47
+ #
48
+ class Common
49
+ include BaseComponent
50
+
51
+ option_method :query
52
+ option_method :cutoff_frequency
53
+ option_method :low_freq_operator
54
+ option_method :minimum_should_match
55
+ option_method :boost
56
+ option_method :analyzer
57
+ option_method :disable_coord
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,90 @@
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 Queries
31
+ # A query which wraps another query or filter and returns a constant score for matching documents
32
+ #
33
+ # @example
34
+ #
35
+ # search do
36
+ # query do
37
+ # constant_score do
38
+ # query do
39
+ # match content: 'Twitter'
40
+ # end
41
+ # end
42
+ # end
43
+ # end
44
+ #
45
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/ignoring-tfidf.html
46
+ #
47
+ class ConstantScore
48
+ include BaseComponent
49
+
50
+ option_method :boost
51
+
52
+ # DSL method for building the `query` part of the query definition
53
+ #
54
+ # @return [self]
55
+ #
56
+ def query(*args, &block)
57
+ @query = block ? @query = Query.new(*args, &block) : args.first
58
+ self
59
+ end
60
+
61
+ # DSL method for building the `filter` part of the query definition
62
+ #
63
+ # @return [self]
64
+ #
65
+ def filter(*args, &block)
66
+ @filter = block ? Filter.new(*args, &block) : args.first
67
+ self
68
+ end
69
+
70
+ # Converts the query definition to a Hash
71
+ #
72
+ # @return [Hash]
73
+ #
74
+ def to_hash
75
+ hash = super
76
+ if @query
77
+ _query = @query.respond_to?(:to_hash) ? @query.to_hash : @query
78
+ hash[name].update(query: _query)
79
+ end
80
+ if @filter
81
+ _filter = @filter.respond_to?(:to_hash) ? @filter.to_hash : @filter
82
+ hash[name].update(filter: _filter)
83
+ end
84
+ hash
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
90
+ 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 Queries
31
+ # A query which will score the documents based on the highest score of any individual specified query,
32
+ # not by summing the scores (as eg. a `bool` query would)
33
+ #
34
+ # @example
35
+ #
36
+ # search do
37
+ # query do
38
+ # dis_max do
39
+ # queries [
40
+ # { match: { title: 'albino' } },
41
+ # { match: { content: 'elephant' } }
42
+ # ]
43
+ # end
44
+ # end
45
+ # end
46
+ #
47
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/_best_fields.html
48
+ #
49
+ class DisMax
50
+ include BaseComponent
51
+
52
+ option_method :queries
53
+ option_method :boost
54
+ option_method :tie_breaker
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,68 @@
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 Queries
31
+ # Returns documents that have at least one non-null value in the field.
32
+ #
33
+ # @example Find documents with non-empty "name" property
34
+ #
35
+ # search do
36
+ # query do
37
+ # exists do
38
+ # field 'name'
39
+ # end
40
+ # end
41
+ # end
42
+ #
43
+ # @note The "Exists" query can be used as a "Missing" query in a "Bool" query "Must Not" context.
44
+ #
45
+ # @example Find documents with an empty "name" property
46
+ #
47
+ # search do
48
+ # query do
49
+ # bool do
50
+ # must_not do
51
+ # exists do
52
+ # field 'name'
53
+ # end
54
+ # end
55
+ # end
56
+ # end
57
+ # end
58
+ #
59
+ #
60
+ class Exists
61
+ include BaseComponent
62
+
63
+ option_method :field
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,101 @@
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 Queries
31
+ # A query which allows to combine a query with a filter
32
+ #
33
+ # @note It's possible and common to define just the `filter` part of the search definition,
34
+ # for a structured search use case.
35
+ #
36
+ # @example Find documents about Twitter published last month
37
+ #
38
+ # search do
39
+ # query do
40
+ # filtered do
41
+ # query do
42
+ # multi_match do
43
+ # query 'twitter'
44
+ # fields [ :title, :abstract, :content ]
45
+ # end
46
+ # end
47
+ # filter do
48
+ # range :published_on do
49
+ # gte 'now-1M/M'
50
+ # end
51
+ # end
52
+ # end
53
+ # end
54
+ # end
55
+ #
56
+ # @see http://opensearch.org/guide/en/opensearch/reference/current/query-dsl-filtered-query.html
57
+ #
58
+ class Filtered
59
+ include BaseComponent
60
+
61
+ option_method :strategy
62
+
63
+ # DSL method for building the `query` part of the query definition
64
+ #
65
+ # @return [self]
66
+ #
67
+ def query(*args, &block)
68
+ @query = block ? @query = Query.new(*args, &block) : args.first
69
+ self
70
+ end
71
+
72
+ # DSL method for building the `filter` part of the query definition
73
+ #
74
+ # @return [self]
75
+ #
76
+ def filter(*args, &block)
77
+ @filter = block ? Filter.new(*args, &block) : args.first
78
+ self
79
+ end
80
+
81
+ # Converts the query definition to a Hash
82
+ #
83
+ # @return [Hash]
84
+ #
85
+ def to_hash
86
+ hash = super
87
+ if @query
88
+ _query = @query.respond_to?(:to_hash) ? @query.to_hash : @query
89
+ hash[name].update(query: _query)
90
+ end
91
+ if @filter
92
+ _filter = @filter.respond_to?(:to_hash) ? @filter.to_hash : @filter
93
+ hash[name].update(filter: _filter)
94
+ end
95
+ hash
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,122 @@
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 Queries
31
+ # A query which allows to modify the score of documents matching the query,
32
+ # either via built-in functions or a custom script
33
+ #
34
+ # @example Find documents with specific amenities, boosting documents within a certain
35
+ # price range and geogprahical location
36
+ #
37
+ # search do
38
+ # query do
39
+ # function_score do
40
+ # filter do
41
+ # terms amenities: ['wifi', 'pets']
42
+ # end
43
+ # functions << { gauss: { price: { origin: 100, scale: 200 } } }
44
+ # functions << { gauss: { location: { origin: '50.090223,14.399590', scale: '5km' } } }
45
+ # end
46
+ # end
47
+ # end
48
+ #
49
+ # @see http://opensearch.org/guide/en/opensearch/guide/current/function-score-query.html
50
+ #
51
+ class FunctionScore
52
+ include BaseComponent
53
+
54
+ option_method :script_score
55
+ option_method :boost
56
+ option_method :max_boost
57
+ option_method :score_mode
58
+ option_method :boost_mode
59
+
60
+ def initialize(*args, &block)
61
+ super
62
+ @functions = []
63
+ end
64
+
65
+ # DSL method for building the `query` part of the query definition
66
+ #
67
+ # @return [self]
68
+ #
69
+ def query(*args, &block)
70
+ @query = block ? @query = Query.new(*args, &block) : args.first
71
+ self
72
+ end
73
+
74
+ # DSL method for building the `filter` part of the query definition
75
+ #
76
+ # @return [self]
77
+ #
78
+ def filter(*args, &block)
79
+ @filter = block ? Filter.new(*args, &block) : args.first
80
+ self
81
+ end
82
+
83
+ # DSL method for building the `functions` part of the query definition
84
+ #
85
+ # @return [Array]
86
+ #
87
+ def functions(value = nil)
88
+ if value
89
+ @functions = value
90
+ else
91
+ @functions
92
+ end
93
+ end
94
+
95
+ # Set the `functions` part of the query definition
96
+ #
97
+ # @return [Array]
98
+ #
99
+ attr_writer :functions
100
+
101
+ # Converts the query definition to a Hash
102
+ #
103
+ # @return [Hash]
104
+ #
105
+ def to_hash
106
+ hash = super
107
+ if @query
108
+ _query = @query.respond_to?(:to_hash) ? @query.to_hash : @query
109
+ hash[name].update(query: _query)
110
+ end
111
+ if @filter
112
+ _filter = @filter.respond_to?(:to_hash) ? @filter.to_hash : @filter
113
+ hash[name].update(filter: _filter)
114
+ end
115
+ hash[name].update(functions: @functions) unless @functions.empty?
116
+ hash
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end