elastic-enterprise-search 0.3.1 → 7.12.1
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.
- checksums.yaml +4 -4
- data/.ci/.gitignore +1 -0
- data/.ci/Dockerfile +12 -0
- data/.ci/certs/README.md +50 -0
- data/.ci/certs/ca.crt +20 -0
- data/.ci/certs/ca.key +27 -0
- data/.ci/certs/testnode.crt +21 -0
- data/.ci/certs/testnode.key +27 -0
- data/.ci/certs/testnode_no_san.crt +19 -0
- data/.ci/certs/testnode_no_san.key +27 -0
- data/.ci/functions/cleanup.sh +67 -0
- data/.ci/functions/imports.sh +59 -0
- data/.ci/functions/wait-for-container.sh +36 -0
- data/.ci/jobs/defaults.yml +69 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+7.11.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+master.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+pull-request.yml +19 -0
- data/.ci/run-elasticsearch.sh +127 -0
- data/.ci/run-enterprise-search.sh +71 -0
- data/.ci/run-local.sh +14 -0
- data/.ci/run-repository.sh +49 -0
- data/.ci/run-tests +27 -0
- data/.ci/test-matrix.yml +14 -0
- data/.github/workflows/rubocop.yml +15 -0
- data/.github/workflows/testing.yml +40 -0
- data/.gitignore +4 -0
- data/.rubocop.yml +52 -0
- data/CONTRIBUTING.md +43 -0
- data/Gemfile +23 -1
- data/{LICENSE.txt → LICENSE} +33 -32
- data/README.md +27 -147
- data/Rakefile +48 -1
- data/docs/guide/app-search-api.asciidoc +186 -0
- data/docs/guide/connecting.asciidoc +125 -0
- data/docs/guide/development.asciidoc +42 -0
- data/docs/guide/enterprise-search-api.asciidoc +46 -0
- data/docs/guide/index.asciidoc +19 -0
- data/docs/guide/installation.asciidoc +18 -0
- data/docs/guide/overview.asciidoc +59 -0
- data/docs/guide/release_notes/710.asciidoc +4 -0
- data/docs/guide/release_notes/711.asciidoc +27 -0
- data/docs/guide/release_notes/712.asciidoc +38 -0
- data/docs/guide/release_notes/index.asciidoc +14 -0
- data/docs/guide/workplace-search-api.asciidoc +121 -0
- data/elastic-enterprise-search.gemspec +49 -13
- data/lib/elastic-enterprise-search.rb +20 -1
- data/lib/elastic/.rubocop.yml +6 -0
- data/lib/elastic/app-search/api/add_meta_engine_source.rb +51 -0
- data/lib/elastic/app-search/api/api_logs.rb +62 -0
- data/lib/elastic/app-search/api/count_analytics.rb +52 -0
- data/lib/elastic/app-search/api/create_curation.rb +54 -0
- data/lib/elastic/app-search/api/create_engine.rb +53 -0
- data/lib/elastic/app-search/api/create_synonym_set.rb +51 -0
- data/lib/elastic/app-search/api/curation.rb +53 -0
- data/lib/elastic/app-search/api/delete_curation.rb +53 -0
- data/lib/elastic/app-search/api/delete_documents.rb +51 -0
- data/lib/elastic/app-search/api/delete_engine.rb +50 -0
- data/lib/elastic/app-search/api/delete_meta_engine_source.rb +51 -0
- data/lib/elastic/app-search/api/delete_synonym_set.rb +53 -0
- data/lib/elastic/app-search/api/documents.rb +51 -0
- data/lib/elastic/app-search/api/engine.rb +50 -0
- data/lib/elastic/app-search/api/index_documents.rb +51 -0
- data/lib/elastic/app-search/api/list_curations.rb +52 -0
- data/lib/elastic/app-search/api/list_documents.rb +52 -0
- data/lib/elastic/app-search/api/list_engines.rb +49 -0
- data/lib/elastic/app-search/api/list_synonym_sets.rb +52 -0
- data/lib/elastic/app-search/api/log_clickthrough.rb +57 -0
- data/lib/elastic/app-search/api/multi_search.rb +51 -0
- data/lib/elastic/app-search/api/put_curation.rb +57 -0
- data/lib/elastic/app-search/api/put_documents.rb +51 -0
- data/lib/elastic/app-search/api/put_schema.rb +51 -0
- data/lib/elastic/app-search/api/put_search_settings.rb +51 -0
- data/lib/elastic/app-search/api/put_synonym_set.rb +54 -0
- data/lib/elastic/app-search/api/query_suggestion.rb +54 -0
- data/lib/elastic/app-search/api/reset_search_settings.rb +50 -0
- data/lib/elastic/app-search/api/schema.rb +50 -0
- data/lib/elastic/app-search/api/search.rb +50 -0
- data/lib/elastic/app-search/api/search_settings.rb +50 -0
- data/lib/elastic/app-search/api/synonym_set.rb +53 -0
- data/lib/elastic/app-search/api/top_clicks_analytics.rb +54 -0
- data/lib/elastic/app-search/api/top_queries_analytics.rb +53 -0
- data/lib/elastic/app-search/app_search.rb +82 -0
- data/lib/elastic/enterprise-search/api/health.rb +43 -0
- data/lib/elastic/enterprise-search/api/put_read_only.rb +44 -0
- data/lib/elastic/enterprise-search/api/read_only.rb +43 -0
- data/lib/elastic/enterprise-search/api/stats.rb +45 -0
- data/lib/elastic/enterprise-search/api/version.rb +43 -0
- data/lib/elastic/enterprise-search/client.rb +93 -15
- data/lib/elastic/enterprise-search/configuration.rb +32 -16
- data/lib/elastic/enterprise-search/exceptions.rb +19 -0
- data/lib/elastic/enterprise-search/request.rb +59 -81
- data/lib/elastic/enterprise-search/utils.rb +28 -1
- data/lib/elastic/enterprise-search/version.rb +20 -1
- data/lib/elastic/enterprise_search.rb +38 -0
- data/lib/elastic/workplace-search/api/add_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/create_analytics_event.rb +59 -0
- data/lib/elastic/workplace-search/api/create_external_identity.rb +51 -0
- data/lib/elastic/workplace-search/api/delete_documents.rb +51 -0
- data/lib/elastic/workplace-search/api/delete_external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/external_identity.rb +53 -0
- data/lib/elastic/workplace-search/api/index_documents.rb +52 -0
- data/lib/elastic/workplace-search/api/list_external_identities.rb +51 -0
- data/lib/elastic/workplace-search/api/list_permissions.rb +51 -0
- data/lib/elastic/workplace-search/api/put_external_identity.rb +54 -0
- data/lib/elastic/workplace-search/api/put_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/remove_user_permissions.rb +54 -0
- data/lib/elastic/workplace-search/api/search.rb +60 -0
- data/lib/elastic/workplace-search/api/user_permissions.rb +53 -0
- data/lib/elastic/workplace-search/workplace_search.rb +84 -0
- data/spec/app-search/api_count_analytics_spec.rb +34 -0
- data/spec/app-search/api_curations_spec.rb +97 -0
- data/spec/app-search/api_documents_spec.rb +102 -0
- data/spec/app-search/api_engines_spec.rb +67 -0
- data/spec/app-search/api_log_clickthrough_spec.rb +34 -0
- data/spec/app-search/api_logs_spec.rb +36 -0
- data/spec/app-search/api_meta_engines_spec.rb +72 -0
- data/spec/app-search/api_query_suggestion_spec.rb +39 -0
- data/spec/app-search/api_schema_spec.rb +48 -0
- data/spec/app-search/api_search_and_multi_search_spec.rb +48 -0
- data/spec/app-search/api_search_settings_spec.rb +76 -0
- data/spec/app-search/api_spec_helper.rb +14 -0
- data/spec/app-search/api_synonyms_spec.rb +79 -0
- data/spec/app-search/api_top_clicks_analytics_spec.rb +44 -0
- data/spec/app-search/api_top_queries_analytics_spec.rb +34 -0
- data/spec/app-search/client_spec.rb +88 -0
- data/spec/app-search/date_spec.rb +69 -0
- data/spec/enterprise-search/client_spec.rb +107 -0
- data/spec/enterprise-search/request_spec.rb +136 -0
- data/spec/enterprise-search/utils_spec.rb +46 -0
- data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +109 -0
- data/spec/fixtures/vcr/app_search/api_documents.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_index_documents.yml +57 -0
- data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +54 -0
- data/spec/fixtures/vcr/app_search/api_logs.yml +70 -0
- data/spec/fixtures/vcr/app_search/api_put_schema.yml +109 -0
- data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +59 -0
- data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_schema.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_search_settings.yml +56 -0
- data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +55 -0
- data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/count_analytics.yml +55 -0
- data/spec/fixtures/vcr/app_search/create_and_update_document.yml +107 -0
- data/spec/fixtures/vcr/app_search/create_curation.yml +113 -0
- data/spec/fixtures/vcr/app_search/create_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/create_meta_engine.yml +56 -0
- data/spec/fixtures/vcr/app_search/create_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_curation.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +56 -0
- data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/get_curation.yml +56 -0
- data/spec/fixtures/vcr/app_search/get_engine.yml +55 -0
- data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +107 -0
- data/spec/fixtures/vcr/app_search/list_curations.yml +56 -0
- data/spec/fixtures/vcr/app_search/list_documents.yml +57 -0
- data/spec/fixtures/vcr/app_search/list_engines.yml +55 -0
- data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +56 -0
- data/spec/fixtures/vcr/app_search/multi_query_search.yml +63 -0
- data/spec/fixtures/vcr/app_search/put_curation.yml +113 -0
- data/spec/fixtures/vcr/app_search/put_synonym_set.yml +56 -0
- data/spec/fixtures/vcr/app_search/search.yml +57 -0
- data/spec/fixtures/vcr/app_search/single_query_search.yml +60 -0
- data/spec/fixtures/vcr/app_search/synonym_set.yml +56 -0
- data/spec/fixtures/vcr/workplace_search/add_user_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/clear_user_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/create_analytics_event.yml +55 -0
- data/spec/fixtures/vcr/workplace_search/create_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/delete_documents.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/delete_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/index_documents.yml +55 -0
- data/spec/fixtures/vcr/workplace_search/list_external_identities.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/list_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/oauth_request_token.yml +57 -0
- data/spec/fixtures/vcr/workplace_search/put_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/put_user_permissions.yml +103 -0
- data/spec/fixtures/vcr/workplace_search/remove_user_permissions.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/retrieve_external_identity.yml +53 -0
- data/spec/fixtures/vcr/workplace_search/search_request.yml +60 -0
- data/spec/fixtures/vcr/workplace_search/user_permissions_empty.yml +53 -0
- data/spec/integration/enterprise_search_api_spec.rb +96 -0
- data/spec/spec_helper.rb +27 -14
- data/spec/webmock_requires.rb +4 -0
- data/spec/workplace-search/client_spec.rb +77 -0
- data/spec/workplace-search/create_analytics_event_spec.rb +59 -0
- data/spec/workplace-search/documents_spec.rb +80 -0
- data/spec/workplace-search/external_identities_spec.rb +84 -0
- data/spec/workplace-search/permissions_spec.rb +136 -0
- data/spec/workplace-search/search_spec.rb +53 -0
- metadata +279 -47
- data/.circleci/config.yml +0 -68
- data/.travis.yml +0 -15
- data/NOTICE.txt +0 -3
- data/lib/elastic/enterprise-search.rb +0 -7
- data/lib/elastic/enterprise-search/client/content_source_documents.rb +0 -46
- data/lib/elastic/enterprise-search/client/permissions.rb +0 -30
- data/logo-enterprise-search.png +0 -0
- data/spec/client/content_source_documents_spec.rb +0 -55
- data/spec/client/permissions_spec.rb +0 -75
- data/spec/configuration_spec.rb +0 -19
- data/spec/fixtures/vcr/add_user_permissions.yml +0 -55
- data/spec/fixtures/vcr/async_create_or_update_document_success.yml +0 -51
- data/spec/fixtures/vcr/destroy_documents_success.yml +0 -51
- data/spec/fixtures/vcr/get_user_permissions.yml +0 -55
- data/spec/fixtures/vcr/list_all_permissions.yml +0 -55
- data/spec/fixtures/vcr/list_all_permissions_with_paging.yml +0 -55
- data/spec/fixtures/vcr/remove_user_permissions.yml +0 -55
- data/spec/fixtures/vcr/update_user_permissions.yml +0 -55
@@ -0,0 +1,19 @@
|
|
1
|
+
= enterprise-search-ruby
|
2
|
+
|
3
|
+
:doctype: book
|
4
|
+
|
5
|
+
include::{asciidoc-dir}/../../shared/attributes.asciidoc[]
|
6
|
+
|
7
|
+
include::overview.asciidoc[]
|
8
|
+
|
9
|
+
include::installation.asciidoc[]
|
10
|
+
|
11
|
+
include::connecting.asciidoc[]
|
12
|
+
|
13
|
+
include::enterprise-search-api.asciidoc[]
|
14
|
+
|
15
|
+
include::app-search-api.asciidoc[]
|
16
|
+
|
17
|
+
include::workplace-search-api.asciidoc[]
|
18
|
+
|
19
|
+
include::release_notes/index.asciidoc[]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
[[installation]]
|
2
|
+
== Installation
|
3
|
+
|
4
|
+
You can install Enterprise Search Client from Rubygems:
|
5
|
+
|
6
|
+
[source,sh]
|
7
|
+
---------------------------------------------------
|
8
|
+
$ gem install elastic-enterprise-search --pre
|
9
|
+
---------------------------------------------------
|
10
|
+
|
11
|
+
Or add it to your project's Gemfile:
|
12
|
+
|
13
|
+
[source,sh]
|
14
|
+
---------------------------------------------------
|
15
|
+
gem 'elastic-enterprise-search'
|
16
|
+
---------------------------------------------------
|
17
|
+
|
18
|
+
The version follows the Elastic Stack version so 7.10.0 is compatible with Enterprise Search released in Elastic Stack 7.10.0.
|
@@ -0,0 +1,59 @@
|
|
1
|
+
[[overview]]
|
2
|
+
== Overview
|
3
|
+
|
4
|
+
This is the official Ruby client for Elastic Enterprise Search.
|
5
|
+
|
6
|
+
[discrete]
|
7
|
+
=== Compatibility
|
8
|
+
|
9
|
+
Current development happens in the master branch.
|
10
|
+
|
11
|
+
The library is compatible with all Elastic Enterprise Search versions since `7.x` but you **have to use a matching major version**:
|
12
|
+
|
13
|
+
For **Elastic Enterprise Search 7.0** and later, use the major version 7 (`7.x.y`) of the library.
|
14
|
+
|
15
|
+
[discrete]
|
16
|
+
=== HTTP Library
|
17
|
+
This library uses https://github.com/elastic/elasticsearch-ruby/tree/master/elasticsearch-transport[elasticsearch-transport], the low-level Ruby client for connecting to an Elasticsearch cluster - also used in the official https://github.com/elastic/elasticsearch-ruby[Elasticsearch Ruby Client].
|
18
|
+
|
19
|
+
All requests, if successful, will return an `Elasticsearch::Transport::Transport::Response` instance. You can access the response `body`, `headers` and `status`.
|
20
|
+
|
21
|
+
`elasticsearch-transport` defines a https://github.com/elasticsearch/elasticsearch-ruby/blob/master/elasticsearch-transport/lib/elasticsearch/transport/transport/errors.rb[number of exception classes] for various client and server errors, as well as unsuccessful HTTP responses, making it possible to rescue specific exceptions with desired granularity. More details https://github.com/elastic/elasticsearch-ruby/tree/master/elasticsearch-transport#exception-handling[here]. You can find the full documentation for `elasticsearch-transport` at https://rubydoc.info/gems/elasticsearch-transport[RubyDoc].
|
22
|
+
|
23
|
+
The clients pass different options to transport, you can check them out https://rubydoc.info/github/elastic/enterprise-search-ruby/Elastic/EnterpriseSearch/Client[on RubyDocs].
|
24
|
+
|
25
|
+
[discrete]
|
26
|
+
==== Setting the host and port
|
27
|
+
|
28
|
+
If you don't specify a host and port, the client will default to `http://localhost:3002`. Otherwise pass in the `:host` parameter as a String.
|
29
|
+
|
30
|
+
[discrete]
|
31
|
+
=== Logging
|
32
|
+
|
33
|
+
You can enable logging with the default logger by passing `log: true` as a parameter to the client's initializer, or pass in a Logger object with the `:logger` parameter:
|
34
|
+
|
35
|
+
[source,rb]
|
36
|
+
----------------------------
|
37
|
+
logger = MyLogger.new
|
38
|
+
client = Elastic::EnterpriseSearch::Client.new(logger: logger)
|
39
|
+
----------------------------
|
40
|
+
|
41
|
+
[discrete]
|
42
|
+
=== License
|
43
|
+
|
44
|
+
Licensed to Elasticsearch B.V. under one or more contributor
|
45
|
+
license agreements. See the NOTICE file distributed with
|
46
|
+
this work for additional information regarding copyright
|
47
|
+
ownership. Elasticsearch B.V. licenses this file to you under
|
48
|
+
the Apache License, Version 2.0 (the "License"); you may
|
49
|
+
not use this file except in compliance with the License.
|
50
|
+
You may obtain a copy of the License at
|
51
|
+
|
52
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
53
|
+
|
54
|
+
Unless required by applicable law or agreed to in writing,
|
55
|
+
software distributed under the License is distributed on an
|
56
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
57
|
+
KIND, either express or implied. See the License for the
|
58
|
+
specific language governing permissions and limitations
|
59
|
+
under the License.
|
@@ -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,38 @@
|
|
1
|
+
[[release_notes_712]]
|
2
|
+
=== 7.12 Release notes
|
3
|
+
|
4
|
+
[discrete]
|
5
|
+
[[release_notes_7121]]
|
6
|
+
=== 7.12.1 Release notes
|
7
|
+
|
8
|
+
- Elastic Transport: Locks dependency version to < 7.14
|
9
|
+
- Elastic Transport: Adds ENTERPRISE_SERVICE_VERSION constant for compatibility
|
10
|
+
|
11
|
+
[discrete]
|
12
|
+
[[release_notes_7120]]
|
13
|
+
=== 7.12.0 Release notes
|
14
|
+
|
15
|
+
|
16
|
+
[discrete]
|
17
|
+
==== General
|
18
|
+
|
19
|
+
- Tested with Elastic Enterprise Search API version 7.12.0.
|
20
|
+
- 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].
|
21
|
+
- Bumps `elasticsearch-transport` dependency to version 7.11 and up.
|
22
|
+
- Updates `run-local` script to fix rake `stack` task.
|
23
|
+
|
24
|
+
[discrete]
|
25
|
+
==== App Search
|
26
|
+
|
27
|
+
- Updates source code documentation for `current_page` and `page_size` parameters from type `String` to `Integer`.
|
28
|
+
- In `multi_search`, the body parameter is renamed to `body` from `queries` to avoid repetition and potential confusion.
|
29
|
+
|
30
|
+
[discrete]
|
31
|
+
==== Workplace Search
|
32
|
+
|
33
|
+
- Body parameter renamed to `document_ids` in `delete_documents`:
|
34
|
+
|
35
|
+
[source,rb]
|
36
|
+
----------------------------
|
37
|
+
client.delete_documents(content_source_id, document_ids: ['e68fbc2688f1', 'c535e226aee3'])
|
38
|
+
----------------------------
|
@@ -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,24 +1,60 @@
|
|
1
|
-
|
2
|
-
|
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.
|
25
|
+
s.required_ruby_version = '>= 2.5'
|
26
|
+
s.name = 'elastic-enterprise-search'
|
6
27
|
s.version = Elastic::EnterpriseSearch::VERSION
|
7
|
-
s.authors = [
|
8
|
-
s.email = [
|
9
|
-
s.homepage =
|
10
|
-
s.summary =
|
11
|
-
s.description =
|
12
|
-
|
13
|
-
|
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
|
+
}
|
14
44
|
|
15
45
|
s.files = `git ls-files`.split("\n")
|
16
46
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
-
s.require_paths = [
|
47
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
48
|
+
s.require_paths = ['lib']
|
19
49
|
|
20
|
-
s.
|
50
|
+
s.add_dependency 'elasticsearch-transport', '>= 7.11', '< 7.14'
|
51
|
+
s.add_runtime_dependency 'jwt', '>= 1.5', '< 3.0'
|
21
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'
|
22
57
|
s.add_development_dependency 'vcr', '~> 3.0.3'
|
23
58
|
s.add_development_dependency 'webmock'
|
24
59
|
end
|
60
|
+
# rubocop:enable Metrics/BlockLength
|
@@ -1 +1,20 @@
|
|
1
|
-
|
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,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
|