elastic-enterprise-search 0.2.1 → 7.12.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 (201) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/.gitignore +1 -0
  3. data/.ci/Dockerfile +12 -0
  4. data/.ci/certs/README.md +50 -0
  5. data/.ci/certs/ca.crt +20 -0
  6. data/.ci/certs/ca.key +27 -0
  7. data/.ci/certs/testnode.crt +21 -0
  8. data/.ci/certs/testnode.key +27 -0
  9. data/.ci/certs/testnode_no_san.crt +19 -0
  10. data/.ci/certs/testnode_no_san.key +27 -0
  11. data/.ci/functions/cleanup.sh +67 -0
  12. data/.ci/functions/imports.sh +59 -0
  13. data/.ci/functions/wait-for-container.sh +36 -0
  14. data/.ci/jobs/defaults.yml +69 -0
  15. data/.ci/jobs/elastic+enterprise-search-ruby+7.11.yml +12 -0
  16. data/.ci/jobs/elastic+enterprise-search-ruby+master.yml +12 -0
  17. data/.ci/jobs/elastic+enterprise-search-ruby+pull-request.yml +19 -0
  18. data/.ci/run-elasticsearch.sh +127 -0
  19. data/.ci/run-enterprise-search.sh +71 -0
  20. data/.ci/run-local.sh +14 -0
  21. data/.ci/run-repository.sh +47 -0
  22. data/.ci/run-tests +27 -0
  23. data/.ci/test-matrix.yml +14 -0
  24. data/.github/workflows/rubocop.yml +15 -0
  25. data/.github/workflows/testing.yml +40 -0
  26. data/.gitignore +4 -0
  27. data/.rubocop.yml +52 -0
  28. data/CONTRIBUTING.md +43 -0
  29. data/Gemfile +23 -1
  30. data/{LICENSE.txt → LICENSE} +33 -32
  31. data/README.md +29 -93
  32. data/Rakefile +48 -1
  33. data/docs/guide/app-search-api.asciidoc +186 -0
  34. data/docs/guide/connecting.asciidoc +125 -0
  35. data/docs/guide/development.asciidoc +42 -0
  36. data/docs/guide/enterprise-search-api.asciidoc +46 -0
  37. data/docs/guide/index.asciidoc +19 -0
  38. data/docs/guide/installation.asciidoc +18 -0
  39. data/docs/guide/overview.asciidoc +59 -0
  40. data/docs/guide/release_notes/710.asciidoc +4 -0
  41. data/docs/guide/release_notes/711.asciidoc +27 -0
  42. data/docs/guide/release_notes/712.asciidoc +26 -0
  43. data/docs/guide/release_notes/index.asciidoc +14 -0
  44. data/docs/guide/workplace-search-api.asciidoc +121 -0
  45. data/elastic-enterprise-search.gemspec +49 -12
  46. data/lib/elastic-enterprise-search.rb +20 -1
  47. data/lib/elastic/.rubocop.yml +6 -0
  48. data/lib/elastic/app-search/api/add_meta_engine_source.rb +51 -0
  49. data/lib/elastic/app-search/api/api_logs.rb +62 -0
  50. data/lib/elastic/app-search/api/count_analytics.rb +52 -0
  51. data/lib/elastic/app-search/api/create_curation.rb +54 -0
  52. data/lib/elastic/app-search/api/create_engine.rb +53 -0
  53. data/lib/elastic/app-search/api/create_synonym_set.rb +51 -0
  54. data/lib/elastic/app-search/api/curation.rb +53 -0
  55. data/lib/elastic/app-search/api/delete_curation.rb +53 -0
  56. data/lib/elastic/app-search/api/delete_documents.rb +51 -0
  57. data/lib/elastic/app-search/api/delete_engine.rb +50 -0
  58. data/lib/elastic/app-search/api/delete_meta_engine_source.rb +51 -0
  59. data/lib/elastic/app-search/api/delete_synonym_set.rb +53 -0
  60. data/lib/elastic/app-search/api/documents.rb +51 -0
  61. data/lib/elastic/app-search/api/engine.rb +50 -0
  62. data/lib/elastic/app-search/api/index_documents.rb +51 -0
  63. data/lib/elastic/app-search/api/list_curations.rb +52 -0
  64. data/lib/elastic/app-search/api/list_documents.rb +52 -0
  65. data/lib/elastic/app-search/api/list_engines.rb +49 -0
  66. data/lib/elastic/app-search/api/list_synonym_sets.rb +52 -0
  67. data/lib/elastic/app-search/api/log_clickthrough.rb +57 -0
  68. data/lib/elastic/app-search/api/multi_search.rb +51 -0
  69. data/lib/elastic/app-search/api/put_curation.rb +57 -0
  70. data/lib/elastic/app-search/api/put_documents.rb +51 -0
  71. data/lib/elastic/app-search/api/put_schema.rb +51 -0
  72. data/lib/elastic/app-search/api/put_search_settings.rb +51 -0
  73. data/lib/elastic/app-search/api/put_synonym_set.rb +54 -0
  74. data/lib/elastic/app-search/api/query_suggestion.rb +54 -0
  75. data/lib/elastic/app-search/api/reset_search_settings.rb +50 -0
  76. data/lib/elastic/app-search/api/schema.rb +50 -0
  77. data/lib/elastic/app-search/api/search.rb +50 -0
  78. data/lib/elastic/app-search/api/search_settings.rb +50 -0
  79. data/lib/elastic/app-search/api/synonym_set.rb +53 -0
  80. data/lib/elastic/app-search/api/top_clicks_analytics.rb +54 -0
  81. data/lib/elastic/app-search/api/top_queries_analytics.rb +53 -0
  82. data/lib/elastic/app-search/app_search.rb +82 -0
  83. data/lib/elastic/enterprise-search/api/health.rb +43 -0
  84. data/lib/elastic/enterprise-search/api/put_read_only.rb +44 -0
  85. data/lib/elastic/enterprise-search/api/read_only.rb +43 -0
  86. data/lib/elastic/enterprise-search/api/stats.rb +45 -0
  87. data/lib/elastic/enterprise-search/api/version.rb +43 -0
  88. data/lib/elastic/enterprise-search/client.rb +90 -52
  89. data/lib/elastic/enterprise-search/configuration.rb +32 -16
  90. data/lib/elastic/enterprise-search/exceptions.rb +19 -0
  91. data/lib/elastic/enterprise-search/request.rb +59 -81
  92. data/lib/elastic/enterprise-search/utils.rb +28 -1
  93. data/lib/elastic/enterprise-search/version.rb +20 -1
  94. data/lib/elastic/enterprise_search.rb +38 -0
  95. data/lib/elastic/workplace-search/api/add_user_permissions.rb +54 -0
  96. data/lib/elastic/workplace-search/api/create_analytics_event.rb +59 -0
  97. data/lib/elastic/workplace-search/api/create_external_identity.rb +51 -0
  98. data/lib/elastic/workplace-search/api/delete_documents.rb +51 -0
  99. data/lib/elastic/workplace-search/api/delete_external_identity.rb +53 -0
  100. data/lib/elastic/workplace-search/api/external_identity.rb +53 -0
  101. data/lib/elastic/workplace-search/api/index_documents.rb +52 -0
  102. data/lib/elastic/workplace-search/api/list_external_identities.rb +51 -0
  103. data/lib/elastic/workplace-search/api/list_permissions.rb +51 -0
  104. data/lib/elastic/workplace-search/api/put_external_identity.rb +54 -0
  105. data/lib/elastic/workplace-search/api/put_user_permissions.rb +54 -0
  106. data/lib/elastic/workplace-search/api/remove_user_permissions.rb +54 -0
  107. data/lib/elastic/workplace-search/api/search.rb +60 -0
  108. data/lib/elastic/workplace-search/api/user_permissions.rb +53 -0
  109. data/lib/elastic/workplace-search/workplace_search.rb +84 -0
  110. data/spec/app-search/api_count_analytics_spec.rb +34 -0
  111. data/spec/app-search/api_curations_spec.rb +97 -0
  112. data/spec/app-search/api_documents_spec.rb +102 -0
  113. data/spec/app-search/api_engines_spec.rb +67 -0
  114. data/spec/app-search/api_log_clickthrough_spec.rb +34 -0
  115. data/spec/app-search/api_logs_spec.rb +36 -0
  116. data/spec/app-search/api_meta_engines_spec.rb +72 -0
  117. data/spec/app-search/api_query_suggestion_spec.rb +39 -0
  118. data/spec/app-search/api_schema_spec.rb +48 -0
  119. data/spec/app-search/api_search_and_multi_search_spec.rb +48 -0
  120. data/spec/app-search/api_search_settings_spec.rb +76 -0
  121. data/spec/app-search/api_spec_helper.rb +14 -0
  122. data/spec/app-search/api_synonyms_spec.rb +79 -0
  123. data/spec/app-search/api_top_clicks_analytics_spec.rb +44 -0
  124. data/spec/app-search/api_top_queries_analytics_spec.rb +34 -0
  125. data/spec/app-search/client_spec.rb +88 -0
  126. data/spec/app-search/date_spec.rb +69 -0
  127. data/spec/enterprise-search/client_spec.rb +107 -0
  128. data/spec/enterprise-search/request_spec.rb +136 -0
  129. data/spec/enterprise-search/utils_spec.rb +46 -0
  130. data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +109 -0
  131. data/spec/fixtures/vcr/app_search/api_documents.yml +56 -0
  132. data/spec/fixtures/vcr/app_search/api_index_documents.yml +57 -0
  133. data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +54 -0
  134. data/spec/fixtures/vcr/app_search/api_logs.yml +70 -0
  135. data/spec/fixtures/vcr/app_search/api_put_schema.yml +109 -0
  136. data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +56 -0
  137. data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +59 -0
  138. data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +56 -0
  139. data/spec/fixtures/vcr/app_search/api_schema.yml +56 -0
  140. data/spec/fixtures/vcr/app_search/api_search_settings.yml +56 -0
  141. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +55 -0
  142. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +55 -0
  143. data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +55 -0
  144. data/spec/fixtures/vcr/app_search/count_analytics.yml +55 -0
  145. data/spec/fixtures/vcr/app_search/create_and_update_document.yml +107 -0
  146. data/spec/fixtures/vcr/app_search/create_curation.yml +113 -0
  147. data/spec/fixtures/vcr/app_search/create_engine.yml +55 -0
  148. data/spec/fixtures/vcr/app_search/create_meta_engine.yml +56 -0
  149. data/spec/fixtures/vcr/app_search/create_synonym_set.yml +56 -0
  150. data/spec/fixtures/vcr/app_search/delete_curation.yml +56 -0
  151. data/spec/fixtures/vcr/app_search/delete_engine.yml +55 -0
  152. data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +56 -0
  153. data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +56 -0
  154. data/spec/fixtures/vcr/app_search/get_curation.yml +56 -0
  155. data/spec/fixtures/vcr/app_search/get_engine.yml +55 -0
  156. data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +107 -0
  157. data/spec/fixtures/vcr/app_search/list_curations.yml +56 -0
  158. data/spec/fixtures/vcr/app_search/list_documents.yml +57 -0
  159. data/spec/fixtures/vcr/app_search/list_engines.yml +55 -0
  160. data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +56 -0
  161. data/spec/fixtures/vcr/app_search/multi_query_search.yml +63 -0
  162. data/spec/fixtures/vcr/app_search/put_curation.yml +113 -0
  163. data/spec/fixtures/vcr/app_search/put_synonym_set.yml +56 -0
  164. data/spec/fixtures/vcr/app_search/search.yml +57 -0
  165. data/spec/fixtures/vcr/app_search/single_query_search.yml +60 -0
  166. data/spec/fixtures/vcr/app_search/synonym_set.yml +56 -0
  167. data/spec/fixtures/vcr/workplace_search/add_user_permissions.yml +53 -0
  168. data/spec/fixtures/vcr/workplace_search/clear_user_permissions.yml +53 -0
  169. data/spec/fixtures/vcr/workplace_search/create_analytics_event.yml +55 -0
  170. data/spec/fixtures/vcr/workplace_search/create_external_identity.yml +53 -0
  171. data/spec/fixtures/vcr/workplace_search/delete_documents.yml +53 -0
  172. data/spec/fixtures/vcr/workplace_search/delete_external_identity.yml +53 -0
  173. data/spec/fixtures/vcr/workplace_search/index_documents.yml +55 -0
  174. data/spec/fixtures/vcr/workplace_search/list_external_identities.yml +53 -0
  175. data/spec/fixtures/vcr/workplace_search/list_permissions.yml +53 -0
  176. data/spec/fixtures/vcr/workplace_search/oauth_request_token.yml +57 -0
  177. data/spec/fixtures/vcr/workplace_search/put_external_identity.yml +53 -0
  178. data/spec/fixtures/vcr/workplace_search/put_user_permissions.yml +103 -0
  179. data/spec/fixtures/vcr/workplace_search/remove_user_permissions.yml +53 -0
  180. data/spec/fixtures/vcr/workplace_search/retrieve_external_identity.yml +53 -0
  181. data/spec/fixtures/vcr/workplace_search/search_request.yml +60 -0
  182. data/spec/fixtures/vcr/workplace_search/user_permissions_empty.yml +53 -0
  183. data/spec/integration/enterprise_search_api_spec.rb +96 -0
  184. data/spec/spec_helper.rb +27 -14
  185. data/spec/webmock_requires.rb +4 -0
  186. data/spec/workplace-search/client_spec.rb +77 -0
  187. data/spec/workplace-search/create_analytics_event_spec.rb +59 -0
  188. data/spec/workplace-search/documents_spec.rb +80 -0
  189. data/spec/workplace-search/external_identities_spec.rb +84 -0
  190. data/spec/workplace-search/permissions_spec.rb +136 -0
  191. data/spec/workplace-search/search_spec.rb +53 -0
  192. metadata +272 -28
  193. data/.circleci/config.yml +0 -68
  194. data/.travis.yml +0 -15
  195. data/NOTICE.txt +0 -3
  196. data/lib/elastic/enterprise-search.rb +0 -7
  197. data/logo-enterprise-search.png +0 -0
  198. data/spec/client_spec.rb +0 -57
  199. data/spec/configuration_spec.rb +0 -19
  200. data/spec/fixtures/vcr/async_create_or_update_document_success.yml +0 -51
  201. data/spec/fixtures/vcr/destroy_documents_success.yml +0 -51
@@ -0,0 +1,4 @@
1
+ [[release_notes_710]]
2
+ === 7.10.0.beta.1 Release notes
3
+
4
+ First beta release. It supports the 7.10.0 API for Elastic Enterprise Search, App Search and Workplace Search.
@@ -0,0 +1,27 @@
1
+ [[release_notes_711]]
2
+ === 7.11.0 Release notes
3
+
4
+ First General Availability Release
5
+
6
+ [discrete]
7
+ ==== General
8
+
9
+ - All App Search, Workplace Search and Enterprise Search API endpoints have been implemented updated to the 7.11 specification, and have been tested and documented.
10
+ - Docs were moved from the README file to asciidocs.
11
+ - Some endpoints both in App Search and Workplace Search have changed to have named parameters for `body` when it makes sense.
12
+ - Support for per request custom HTTP headers was added. See docs.
13
+ - Support for per request http authentication was added when using OAuth. See docs.
14
+ - Tested with Ruby 3.
15
+ - Sends the `X-Elastic-Client-Meta` HTTP header which is used by Elastic Cloud and can be disabled with the `enable_meta_header` parameter.
16
+
17
+ [discrete]
18
+ ==== App Search
19
+
20
+ - Added support for signed search key in App Search.
21
+
22
+ [discrete]
23
+ ==== Workplace Search
24
+
25
+ - `content_source_key` was deprecated in favour of `content_source_id`.
26
+ - Added support for OAuth.
27
+ - With OAuth support, `search` and `create_analytics` APIs are now also available.
@@ -0,0 +1,26 @@
1
+ [[release_notes_712]]
2
+ === 7.12.0 Release notes
3
+
4
+ [discrete]
5
+ ==== General
6
+
7
+ - Tested with Elastic Enterprise Search API version 7.12.0.
8
+ - https://www.elastic.co/guide/en/enterprise-search-clients/ruby/7.12/app-search-api.html#_search[Adds multi filter example to App Search docs].
9
+ - Bumps `elasticsearch-transport` dependency to version 7.11 and up.
10
+ - Updates `run-local` script to fix rake `stack` task.
11
+
12
+ [discrete]
13
+ ==== App Search
14
+
15
+ - Updates source code documentation for `current_page` and `page_size` parameters from type `String` to `Integer`.
16
+ - In `multi_search`, the body parameter is renamed to `body` from `queries` to avoid repetition and potential confusion.
17
+
18
+ [discrete]
19
+ ==== Workplace Search
20
+
21
+ - Body parameter renamed to `document_ids` in `delete_documents`:
22
+
23
+ [source,rb]
24
+ ----------------------------
25
+ client.delete_documents(content_source_id, document_ids: ['e68fbc2688f1', 'c535e226aee3'])
26
+ ----------------------------
@@ -0,0 +1,14 @@
1
+ [[release_notes]]
2
+ == Release Notes
3
+
4
+
5
+ [discrete]
6
+ === 7.x
7
+
8
+ * <<release_notes_712, 7.12.0 Release Notes>>
9
+ * <<release_notes_711, 7.11.0 Release Notes>>
10
+ * <<release_notes_710, 7.10.0.beta.1 Release Notes>>
11
+
12
+ include::712.asciidoc[]
13
+ include::711.asciidoc[]
14
+ include::710.asciidoc[]
@@ -0,0 +1,121 @@
1
+ [[workplace-search-api]]
2
+ == Workplace Search API
3
+
4
+ === Documents
5
+
6
+ [source,rb]
7
+ ----------------------------
8
+ # Index Documents
9
+ documents = [
10
+ { id: 'e68fbc2688f1', title: 'Frankenstein; Or, The Modern Prometheus', author: 'Mary Wollstonecraft Shelley' },
11
+ { id: '0682bb06af1a', title: 'Jungle Tales', author: 'Horacio Quiroga' },
12
+ { id: '75015d85370d', title: 'Lenguas de diamante', author: 'Juana de Ibarbourou' },
13
+ { id: 'c535e226aee3', title: 'Metamorphosis', author: 'Franz Kafka' }
14
+ ]
15
+
16
+ response = client.index_documents(content_source_id, body: documents)
17
+
18
+ # Delete Documents
19
+ response = client.delete_documents(content_source_id, document_ids: ['e68fbc2688f1', 'c535e226aee3'])
20
+ ----------------------------
21
+
22
+ === OAuth Authentication
23
+
24
+ You need to configure the OAuth Application for Search in order to use the Workplace Search client's `search` and `create_analytics` endpoints. You need to follow the steps in https://www.elastic.co/guide/en/workplace-search/current/building-custom-search-workplace-search.html#configuring-search-oauth[Configuring the OAuth Application for Search] to retrieve the credentials: Client ID and Client Secret to request access tokens from the authentication server.
25
+
26
+ [source,rb]
27
+ ----------------------------
28
+ client = Elastic::EnterpriseSearch::WorkplaceSearch::Client.new(http_auth: <access_token>)
29
+
30
+ client_id = <client_id>
31
+ client_secret = <client_secret>
32
+ redirect_uri = <redirect_uri>
33
+
34
+ # Get the authorization URL:
35
+ client.authorization_url(client_id, redirect_uri)
36
+ > https://host:port/ws/oauth/authorize?response_type=code&client_id=client_id&redirect_uri=https%3A%2F%2Flocalhost%3A3002
37
+ ----------------------------
38
+
39
+ Open the URL to authorize your application. Successful authorization redirects the user in accordance to the redirect URI provided (and configured for the application). The application server must now request for an access_token, which is generated by Workplace Search using the oauth/token endpoint, using the Client ID and Client Secret.
40
+
41
+ [source,rb]
42
+ ----------------------------
43
+ authorization_code = '<paste code from redirect>'
44
+
45
+ access_token = client.request_access_token(client_id, client_secret, authorization_code, redirect_uri)
46
+
47
+ # The access_token can now be used to issue a search request:
48
+ client.search(body: {query: 'search query'}, access_token: access_token)
49
+ ----------------------------
50
+
51
+ See https://www.elastic.co/guide/en/workplace-search/current/workplace-search-search-api.html#search-api-overview[Search API Overview] for more search parameters.
52
+
53
+ === Permissions
54
+
55
+ [source,rb]
56
+ ----------------------------
57
+ # List permissions
58
+ client.list_permissions(content_source_id)
59
+
60
+ # Get a user permissions
61
+ response = client.user_permissions(content_source_id, { user: 'enterprise_search' })
62
+
63
+ # Clear user permissions
64
+ client.put_user_permissions(content_source_id, { permissions: [], user: 'enterpise_search' })
65
+
66
+ # Add permissions to a user
67
+ client.add_user_permissions(
68
+ content_source_id,
69
+ { permissions: ['permission1', 'permission2'], user: user }
70
+ )
71
+
72
+ # Updates user permissions
73
+ client.put_user_permissions(content_source_id, { permissions: [], user: user })
74
+
75
+ # Remove permissions from a user
76
+ client.remove_user_permissions(
77
+ content_source_id,
78
+ { permissions: ['permission1', 'permission2'], user: user }
79
+ )
80
+ ----------------------------
81
+
82
+ === External Identities
83
+
84
+ [source,rb]
85
+ ----------------------------
86
+ # Create external identities
87
+ body = { user: 'elastic_user', source_user_id: 'example@elastic.co' }
88
+ client.create_external_identity(content_source_id, body: body)
89
+
90
+ # Retrieve an external identity
91
+ client.external_identity(content_source_id, user: 'elastic_user')
92
+
93
+ # List external identities
94
+ client.list_external_identities(content_source_id)
95
+
96
+ # Update external identity
97
+ body = { source_user_id: 'example2@elastic.co' }
98
+ client.put_external_identity(content_source_id, user: 'elastic_user', body: body)
99
+
100
+ # Delete an external identity
101
+ client.delete_external_identity(content_source_id, user: 'elastic_user')
102
+ ----------------------------
103
+
104
+ === Create Analytics Event
105
+
106
+ You need to set up OAuth Authentication for analytics events.
107
+
108
+ [source,rb]
109
+ ----------------------------
110
+ body = {
111
+ type: 'click',
112
+ query_id: 'search_query_id',
113
+ document_id: 'document_id',
114
+ page: 1,
115
+ content_source_id: 'content_source_id',
116
+ rank: 1,
117
+ event: 'api'
118
+ }
119
+
120
+ client.create_analytics_event(access_token: oauth_access_token, body: body)
121
+ ----------------------------
@@ -1,23 +1,60 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require "elastic/enterprise-search/version"
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
3
17
 
18
+ # frozen_string_literal: true
19
+
20
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
21
+ require 'elastic/enterprise-search/version'
22
+
23
+ # rubocop:disable Metrics/BlockLength
4
24
  Gem::Specification.new do |s|
5
- s.name = "elastic-enterprise-search"
25
+ s.required_ruby_version = '>= 2.5'
26
+ s.name = 'elastic-enterprise-search'
6
27
  s.version = Elastic::EnterpriseSearch::VERSION
7
- s.authors = ["Quin Hoxie"]
8
- s.email = ["support@elastic.co"]
9
- s.homepage = "https://github.com/elastic/enterprise-search-ruby"
10
- s.summary = %q{Official gem for accessing the Elastic Enterprise Search API}
11
- s.description = %q{API client for accessing the Elastic Enterprise Search API with no dependencies.}
12
- s.licenses = ['Apache-2.0']
28
+ s.authors = ['Fernando Briano']
29
+ s.email = ['support@elastic.co']
30
+ s.homepage = 'https://github.com/elastic/enterprise-search-ruby'
31
+ s.summary = 'Official API client for Elastic Enterprise Search'
32
+ s.description = <<~DESCRIPTION
33
+ Official API client for Elastic Enterprise Search APIs.
34
+ DESCRIPTION
35
+ s.licenses = ['Apache-2.0']
36
+
37
+ s.metadata = {
38
+ 'bug_tracker_uri' => 'https://github.com/elastic/enterprise-search-ruby/issues',
39
+ 'documentation_uri' => 'https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/index.html',
40
+ 'homepage_uri' => 'https://www.elastic.co/enterprise-search',
41
+ 'source_code_uri' => 'https://github.com/elastic/enterprise-search-ruby',
42
+ 'changelog_uri' => 'https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/release_notes.html'
43
+ }
13
44
 
14
45
  s.files = `git ls-files`.split("\n")
15
46
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
- s.require_paths = ["lib"]
47
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
48
+ s.require_paths = ['lib']
18
49
 
19
- s.add_development_dependency 'rspec', '~> 3.0.0'
50
+ s.add_dependency 'elasticsearch-transport', '>= 7.11'
51
+ s.add_runtime_dependency 'jwt', '>= 1.5', '< 3.0'
20
52
  s.add_development_dependency 'awesome_print'
53
+ s.add_development_dependency 'byebug' unless defined?(JRUBY_VERSION)
54
+ s.add_development_dependency 'rspec', '~> 3.9.0'
55
+ s.add_development_dependency 'rspec_junit_formatter'
56
+ s.add_development_dependency 'rubocop', '~> 1.0.0'
21
57
  s.add_development_dependency 'vcr', '~> 3.0.3'
22
58
  s.add_development_dependency 'webmock'
23
59
  end
60
+ # rubocop:enable Metrics/BlockLength
@@ -1 +1,20 @@
1
- require 'elastic/enterprise-search'
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # frozen_string_literal: true
19
+
20
+ require 'elastic/enterprise_search'
@@ -0,0 +1,6 @@
1
+ inherit_from: ../../.rubocop.yml
2
+
3
+ Layout/LineLength:
4
+ Enabled: false
5
+ Style/Documentation:
6
+ Enabled: false
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Engine - Add a source engine to an existing meta engine
25
+ #
26
+ # @param engine_name [String] (*Required*)
27
+ # @param arguments [Hash] endpoint arguments
28
+ # @option arguments [Array] :source_engines List of engine names (*Required*)
29
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
30
+ #
31
+ # @see https://www.elastic.co/guide/en/app-search/current/meta-engines.html#meta-engines-add-source-engines
32
+ #
33
+ def add_meta_engine_source(engine_name, arguments = {})
34
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
35
+ raise ArgumentError, "Required parameter 'source_engines' missing" unless arguments[:source_engines]
36
+
37
+ source_engines = arguments.delete(:source_engines) || {}
38
+ headers = arguments.delete(:headers) || {}
39
+
40
+ request(
41
+ :post,
42
+ "api/as/v1/engines/#{engine_name}/source_engines/",
43
+ arguments,
44
+ source_engines,
45
+ headers
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Logs - The API Log displays API request and response data at the Engine level
25
+ #
26
+ # @param engine_name [String] (*Required*)
27
+ # @param arguments [Hash] endpoint arguments
28
+ # @option arguments [String] :from_date Filter date from (*Required*)
29
+ # @option arguments [String] :to_date Filter date to (*Required*)
30
+ # @option arguments [Integer] :current_page The page to fetch. Defaults to 1
31
+ # @option arguments [Integer] :page_size The number of results per page
32
+ # @option arguments [String] :query Use this to specify a particular endpoint, like analytics, search, curations and so on
33
+ # @option arguments [String] :http_status_filter Filter based on a particular status code: 400, 401, 403, 429, 200
34
+ # @option arguments [String] :http_method_filter Filter based on a particular HTTP method: GET, POST, PUT, PATCH, DELETE
35
+ # @option arguments [String] :sort_direction Would you like to have your results ascending, oldest to newest, or descending, newest to oldest?
36
+ # @option arguments [Hash] :body The request body
37
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
38
+ #
39
+ # @see https://www.elastic.co/guide/en/app-search/current/api-logs.html
40
+ #
41
+ def api_logs(engine_name, arguments = {})
42
+ raise ArgumentError, "Required parameter 'from_date' missing" unless arguments[:from_date]
43
+ raise ArgumentError, "Required parameter 'to_date' missing" unless arguments[:to_date]
44
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
45
+
46
+ body = arguments.delete(:body) || {}
47
+ headers = arguments.delete(:headers) || {}
48
+ arguments['filters[date][from]'] = date_to_rfc3339(arguments.delete(:from_date))
49
+ arguments['filters[date][to]'] = date_to_rfc3339(arguments.delete(:to_date))
50
+
51
+ request(
52
+ :get,
53
+ "api/as/v1/engines/#{engine_name}/logs/api/",
54
+ arguments,
55
+ body,
56
+ headers
57
+ )
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Analytics - Returns the number of clicks and total number of queries over a period
25
+ #
26
+ # @param engine_name [String] (*Required*)
27
+ # @param arguments [Hash] endpoint arguments
28
+ # @option arguments [Array] :filters Analytics filters
29
+ # @option arguments [String] :interval You can define an interval along with your date range. Can be either hour or day
30
+ # @option arguments [Hash] :body The request body
31
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
32
+ #
33
+ # @see https://www.elastic.co/guide/en/app-search/current/counts.html
34
+ #
35
+ def count_analytics(engine_name, arguments = {})
36
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
37
+
38
+ body = arguments.delete(:body) || {}
39
+ headers = arguments.delete(:headers) || {}
40
+
41
+ request(
42
+ :get,
43
+ "api/as/v1/engines/#{engine_name}/analytics/counts/",
44
+ arguments,
45
+ body,
46
+ headers
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end