elastic-enterprise-search 7.17.0 → 8.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/jobs/elastic+enterprise-search-ruby+7.13.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+7.14.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+7.15.yml +12 -0
- data/.ci/jobs/elastic+enterprise-search-ruby+7.16.yml +12 -0
- data/.ci/test-matrix.yml +1 -2
- data/.github/workflows/testing.yml +3 -3
- data/.rubocop.yml +1 -1
- data/CHANGELOG +1 -0
- data/CODE_OF_CONDUCT +1 -0
- data/CONTRIBUTING.md +37 -0
- data/NOTICE +2 -0
- data/README.md +25 -29
- data/docs/guide/app-search-api.asciidoc +52 -18
- data/docs/guide/connecting.asciidoc +0 -1
- data/docs/guide/overview.asciidoc +27 -4
- data/docs/guide/release_notes/712.asciidoc +10 -0
- data/docs/guide/release_notes/714.asciidoc +0 -12
- data/docs/guide/release_notes/715.asciidoc +0 -12
- data/docs/guide/release_notes/80.asciidoc +128 -0
- data/docs/guide/release_notes/index.asciidoc +4 -0
- data/docs/guide/workplace-search-api.asciidoc +38 -11
- data/elastic-enterprise-search.gemspec +3 -3
- data/lib/elastic/api/response.rb +52 -0
- data/lib/elastic/{workplace-search/api/user_permissions.rb → app-search/api/adaptive_relevance_settings.rb} +10 -15
- data/lib/elastic/{workplace-search/api/add_user_permissions.rb → app-search/api/adaptive_relevance_suggestions.rb} +20 -14
- data/lib/elastic/app-search/api/add_meta_engine_source.rb +4 -5
- data/lib/elastic/app-search/api/api_key.rb +4 -6
- data/lib/elastic/app-search/api/api_logs.rb +8 -15
- data/lib/elastic/app-search/api/count_analytics.rb +5 -5
- data/lib/elastic/app-search/api/crawler_active_crawl_request.rb +4 -7
- data/lib/elastic/app-search/api/crawler_crawl_request.rb +6 -8
- data/lib/elastic/app-search/api/crawler_crawl_schedule.rb +4 -7
- data/lib/elastic/app-search/api/crawler_domain.rb +6 -8
- data/lib/elastic/app-search/api/crawler_domain_validation_result.rb +6 -5
- data/lib/elastic/app-search/api/crawler_metrics.rb +3 -6
- data/lib/elastic/app-search/api/crawler_overview.rb +4 -7
- data/lib/elastic/app-search/api/crawler_process_crawl.rb +6 -8
- data/lib/elastic/app-search/api/crawler_process_crawl_denied_urls.rb +6 -8
- data/lib/elastic/app-search/api/crawler_url_extraction_result.rb +6 -6
- data/lib/elastic/app-search/api/crawler_url_tracing_result.rb +7 -7
- data/lib/elastic/app-search/api/crawler_url_validation_result.rb +7 -7
- data/lib/elastic/app-search/api/crawler_user_agent.rb +3 -6
- data/lib/elastic/app-search/api/create_api_key.rb +10 -10
- data/lib/elastic/app-search/api/create_crawler_crawl_request.rb +9 -5
- data/lib/elastic/app-search/api/create_crawler_crawl_rule.rb +13 -11
- data/lib/elastic/app-search/api/create_crawler_domain.rb +8 -8
- data/lib/elastic/app-search/api/create_crawler_entry_point.rb +10 -8
- data/lib/elastic/app-search/api/create_crawler_process_crawl.rb +6 -6
- data/lib/elastic/app-search/api/create_crawler_sitemap.rb +10 -8
- data/lib/elastic/app-search/api/create_curation.rb +10 -8
- data/lib/elastic/app-search/api/create_engine.rb +8 -7
- data/lib/elastic/app-search/api/create_synonym_set.rb +6 -6
- data/lib/elastic/app-search/api/curation.rb +5 -7
- data/lib/elastic/app-search/api/delete_api_key.rb +4 -6
- data/lib/elastic/app-search/api/delete_crawler_active_crawl_request.rb +4 -7
- data/lib/elastic/app-search/api/delete_crawler_crawl_rule.rb +7 -9
- data/lib/elastic/app-search/api/delete_crawler_crawl_schedule.rb +4 -7
- data/lib/elastic/app-search/api/delete_crawler_domain.rb +6 -8
- data/lib/elastic/app-search/api/delete_crawler_entry_point.rb +7 -9
- data/lib/elastic/app-search/api/delete_crawler_sitemap.rb +7 -9
- data/lib/elastic/app-search/api/delete_curation.rb +5 -7
- data/lib/elastic/app-search/api/delete_documents.rb +4 -5
- data/lib/elastic/app-search/api/delete_engine.rb +3 -6
- data/lib/elastic/app-search/api/delete_meta_engine_source.rb +4 -4
- data/lib/elastic/app-search/api/delete_synonym_set.rb +5 -7
- data/lib/elastic/app-search/api/documents.rb +5 -5
- data/lib/elastic/app-search/api/engine.rb +3 -6
- data/lib/elastic/app-search/api/index_documents.rb +4 -5
- data/lib/elastic/{workplace-search/api/remove_user_permissions.rb → app-search/api/list_adaptive_relevance_suggestions.rb} +13 -14
- data/lib/elastic/app-search/api/list_api_keys.rb +2 -5
- data/lib/elastic/app-search/api/list_crawler_crawl_requests.rb +6 -8
- data/lib/elastic/{workplace-search/api/list_permissions.rb → app-search/api/list_crawler_domains.rb} +12 -13
- data/lib/elastic/app-search/api/list_crawler_process_crawls.rb +6 -7
- data/lib/elastic/app-search/api/list_curations.rb +3 -6
- data/lib/elastic/app-search/api/list_documents.rb +3 -6
- data/lib/elastic/app-search/api/list_engines.rb +2 -5
- data/lib/elastic/app-search/api/list_synonym_sets.rb +3 -6
- data/lib/elastic/app-search/api/log_clickthrough.rb +9 -8
- data/lib/elastic/{workplace-search/api/put_user_permissions.rb → app-search/api/put_adaptive_relevance_settings.rb} +13 -14
- data/lib/elastic/app-search/api/put_adaptive_relevance_suggestions.rb +51 -0
- data/lib/elastic/app-search/api/put_api_key.rb +11 -10
- data/lib/elastic/app-search/api/put_crawler_crawl_rule.rb +14 -12
- data/lib/elastic/app-search/api/put_crawler_crawl_schedule.rb +8 -7
- data/lib/elastic/app-search/api/put_crawler_domain.rb +9 -9
- data/lib/elastic/app-search/api/put_crawler_entry_point.rb +11 -9
- data/lib/elastic/app-search/api/put_crawler_sitemap.rb +11 -9
- data/lib/elastic/app-search/api/put_curation.rb +11 -9
- data/lib/elastic/app-search/api/put_documents.rb +4 -4
- data/lib/elastic/app-search/api/put_schema.rb +4 -4
- data/lib/elastic/app-search/api/put_search_settings.rb +6 -6
- data/lib/elastic/app-search/api/put_synonym_set.rb +8 -8
- data/lib/elastic/app-search/api/query_suggestion.rb +5 -5
- data/lib/elastic/app-search/api/refresh_adaptive_relevance_update_process.rb +56 -0
- data/lib/elastic/app-search/api/reset_search_settings.rb +3 -6
- data/lib/elastic/app-search/api/schema.rb +3 -6
- data/lib/elastic/app-search/api/search.rb +6 -5
- data/lib/elastic/app-search/api/search_settings.rb +3 -6
- data/lib/elastic/app-search/api/synonym_set.rb +5 -7
- data/lib/elastic/app-search/api/top_clicks_analytics.rb +5 -5
- data/lib/elastic/app-search/api/top_queries_analytics.rb +4 -4
- data/lib/elastic/enterprise-search/api/health.rb +2 -3
- data/lib/elastic/enterprise-search/api/put_read_only.rb +6 -4
- data/lib/elastic/enterprise-search/api/read_only.rb +2 -3
- data/lib/elastic/enterprise-search/api/stats.rb +2 -3
- data/lib/elastic/enterprise-search/api/version.rb +2 -3
- data/lib/elastic/enterprise-search/client.rb +21 -14
- data/lib/elastic/enterprise-search/request.rb +5 -3
- data/lib/elastic/enterprise-search/version.rb +1 -1
- data/lib/elastic/workplace-search/api/auto_query_refinement_details.rb +3 -4
- data/lib/elastic/workplace-search/api/command_sync_jobs.rb +4 -5
- data/lib/elastic/workplace-search/api/content_source.rb +3 -4
- data/lib/elastic/workplace-search/api/create_analytics_event.rb +16 -12
- data/lib/elastic/workplace-search/api/create_batch_synonym_sets.rb +4 -3
- data/lib/elastic/workplace-search/api/create_content_source.rb +6 -5
- data/lib/elastic/workplace-search/api/create_external_identity.rb +11 -6
- data/lib/elastic/workplace-search/api/current_user.rb +3 -5
- data/lib/elastic/workplace-search/api/delete_content_source.rb +3 -4
- data/lib/elastic/workplace-search/api/delete_documents.rb +4 -4
- data/lib/elastic/workplace-search/api/delete_documents_by_query.rb +4 -3
- data/lib/elastic/workplace-search/api/delete_external_identity.rb +7 -9
- data/lib/elastic/workplace-search/api/delete_synonym_set.rb +3 -5
- data/lib/elastic/workplace-search/api/document.rb +4 -6
- data/lib/elastic/workplace-search/api/external_identity.rb +7 -9
- data/lib/elastic/workplace-search/api/index_documents.rb +3 -4
- data/lib/elastic/workplace-search/api/list_content_sources.rb +2 -3
- data/lib/elastic/workplace-search/api/list_documents.rb +4 -5
- data/lib/elastic/workplace-search/api/list_external_identities.rb +3 -4
- data/lib/elastic/workplace-search/api/list_synonym_sets.rb +1 -2
- data/lib/elastic/workplace-search/api/put_content_source.rb +6 -6
- data/lib/elastic/workplace-search/api/put_content_source_icons.rb +6 -6
- data/lib/elastic/workplace-search/api/put_external_identity.rb +11 -10
- data/lib/elastic/workplace-search/api/put_synonym_set.rb +4 -4
- data/lib/elastic/workplace-search/api/put_triggers_blocklist.rb +3 -5
- data/lib/elastic/workplace-search/api/search.rb +13 -13
- data/lib/elastic/workplace-search/api/synonym_set.rb +3 -5
- data/lib/elastic/workplace-search/api/triggers_blocklist.rb +3 -3
- data/lib/elastic/workplace-search/workplace_search.rb +9 -2
- data/spec/app-search/client_spec.rb +29 -0
- data/spec/enterprise-search/client_spec.rb +29 -0
- data/spec/enterprise-search/request_spec.rb +1 -1
- data/spec/integration/app-search/adaptive_relevance_settings_spec.rb +60 -0
- data/spec/integration/app-search/adaptive_relevance_suggestions_spec.rb +54 -0
- data/spec/integration/app-search/api_logs_spec.rb +11 -3
- data/spec/integration/app-search/app_search_helper.rb +2 -2
- data/spec/integration/app-search/count_analytics_spec.rb +3 -2
- data/spec/integration/app-search/crawler_domain_spec.rb +16 -0
- data/spec/integration/app-search/curations_spec.rb +15 -9
- data/spec/integration/app-search/engines_spec.rb +24 -26
- data/spec/integration/app-search/log_clickthrough_spec.rb +1 -1
- data/spec/integration/app-search/meta_engines_spec.rb +5 -5
- data/spec/integration/app-search/search_and_multiple_search_spec.rb +1 -1
- data/spec/integration/workplace-search/content_sources_spec.rb +6 -6
- data/spec/integration/workplace-search/documents_spec.rb +20 -10
- data/spec/integration/workplace-search/external_identities_spec.rb +26 -16
- data/spec/integration/workplace-search/triggers_spec.rb +2 -2
- data/spec/integration/workplace-search/users_spec.rb +0 -6
- data/spec/workplace-search/client_spec.rb +39 -2
- metadata +29 -20
- data/.ci/jobs/elastic+enterprise-search-ruby+7.10.0.beta.1.yml +0 -12
- data/.github/compatibility/Gemfile +0 -23
- data/.github/workflows/compatibility.yml +0 -20
- data/spec/integration/workplace-search/permissions_spec.rb +0 -77
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b55888296586fd03618a388884373c963fd0f389954b771adcb44a9a9c796f6
|
4
|
+
data.tar.gz: 9b13f8eb9bdca6f3b3fc094862790eef669295409ab320384107f494395e817a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59430b169a6ea03749fdd18b71b368a1848910c7f36ff78a7ce758658a6cccffad4d2d0fb1a7721f75c3bf60c2995865aabb11dee3a7a2f96c059b7bc6c5ac99
|
7
|
+
data.tar.gz: ba6a0a99945e889129ac4e2fc496ce875ed61a50ba9b798fe69567b222dec97782c7bb2f7951c9e9f5d6ffb5469c0feb2dd9a63af494e7ff59717cb1d0240c14
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+7.13
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # 7.13'
|
5
|
+
description: Testing the enterprise-search-ruby 7.13 branch.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
parameters:
|
8
|
+
- string:
|
9
|
+
name: branch_specifier
|
10
|
+
default: refs/heads/7.13
|
11
|
+
description: the Git branch specifier to build (<branchName>, <tagName>,
|
12
|
+
<commitId>, etc.)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+7.14
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # 7.14'
|
5
|
+
description: Testing the enterprise-search-ruby 7.14 branch.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
parameters:
|
8
|
+
- string:
|
9
|
+
name: branch_specifier
|
10
|
+
default: refs/heads/7.14
|
11
|
+
description: the Git branch specifier to build (<branchName>, <tagName>,
|
12
|
+
<commitId>, etc.)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+7.15
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # 7.15'
|
5
|
+
description: Testing the enterprise-search-ruby 7.15 branch.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
parameters:
|
8
|
+
- string:
|
9
|
+
name: branch_specifier
|
10
|
+
default: refs/heads/7.15
|
11
|
+
description: the Git branch specifier to build (<branchName>, <tagName>,
|
12
|
+
<commitId>, etc.)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: elastic+enterprise-search-ruby+7.16
|
4
|
+
display-name: 'elastic / enterprise-search-ruby # 7.16'
|
5
|
+
description: Testing the enterprise-search-ruby 7.16 branch.
|
6
|
+
junit_results: "*-junit.xml"
|
7
|
+
parameters:
|
8
|
+
- string:
|
9
|
+
name: branch_specifier
|
10
|
+
default: refs/heads/7.16
|
11
|
+
description: the Git branch specifier to build (<branchName>, <tagName>,
|
12
|
+
<commitId>, etc.)
|
data/.ci/test-matrix.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
name:
|
1
|
+
name: main
|
2
2
|
on: [push, pull_request]
|
3
3
|
|
4
4
|
jobs:
|
@@ -7,7 +7,7 @@ jobs:
|
|
7
7
|
ENDPOINT: http://localhost:8080
|
8
8
|
strategy:
|
9
9
|
matrix:
|
10
|
-
ruby: [
|
10
|
+
ruby: [ 2.7, 3.0, 3.1 ]
|
11
11
|
|
12
12
|
runs-on: ubuntu-latest
|
13
13
|
steps:
|
@@ -26,7 +26,7 @@ jobs:
|
|
26
26
|
strategy:
|
27
27
|
fail-fast: false
|
28
28
|
matrix:
|
29
|
-
ruby: [ jruby-9.
|
29
|
+
ruby: [ jruby-9.3 ]
|
30
30
|
runs-on: ubuntu-latest
|
31
31
|
steps:
|
32
32
|
- uses: actions/checkout@v2
|
data/.rubocop.yml
CHANGED
data/CHANGELOG
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
See https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/release_notes.html
|
data/CODE_OF_CONDUCT
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
See: https://www.elastic.co/community/codeofconduct
|
data/CONTRIBUTING.md
CHANGED
@@ -1,5 +1,42 @@
|
|
1
1
|
# Contributing to enterprise-search-ruby
|
2
2
|
|
3
|
+
## Run Stack locally
|
4
|
+
|
5
|
+
A rake task is included to run the Elastic Enterprise Search stack locally via Docker:
|
6
|
+
|
7
|
+
```
|
8
|
+
$ rake stack[7.10.0]
|
9
|
+
```
|
10
|
+
|
11
|
+
This will run Elastic Enterprise Search in http://localhost:3002
|
12
|
+
- Username: `enterprise_search`
|
13
|
+
- Password: `changeme`
|
14
|
+
|
15
|
+
The version of the Elastic Enterprise Search Stack to use should be the same as tags of `https://www.docker.elastic.co/r/enterprise-search`. You can also use SNAPSHOT builds such as `8.0.0-SNAPSHOT`, `7.11-SNAPSHOT`, etc.
|
16
|
+
|
17
|
+
## Running Tests
|
18
|
+
|
19
|
+
Unit tests for the clients:
|
20
|
+
|
21
|
+
```
|
22
|
+
$ rake spec:client
|
23
|
+
```
|
24
|
+
|
25
|
+
Integration tests: you need to have an instance of Enterprise Search running either locally or remotely, and specify the host and credentials in environment variables (see below for a complete dockerized setup). If you're using the included rake task `rake stack[:version]`, you can run the integration tests with the following command:
|
26
|
+
|
27
|
+
```
|
28
|
+
$ ELASTIC_ENTERPRISE_HOST='http://localhost:3002' \
|
29
|
+
ELASTIC_ENTERPRISE_USER='elastic' \
|
30
|
+
ELASTIC_ENTERPRISE_PASSWORD='changeme' \
|
31
|
+
rake spec:integration
|
32
|
+
```
|
33
|
+
|
34
|
+
Run integration tests completely within containers, the way we run them on our CI:
|
35
|
+
```
|
36
|
+
RUNSCRIPTS=enterprise-search STACK_VERSION=7.10.0 ./.ci/run-tests
|
37
|
+
```
|
38
|
+
|
39
|
+
|
3
40
|
## Contributing Code Changes
|
4
41
|
|
5
42
|
1. Please make sure you have signed the [Contributor License
|
data/NOTICE
ADDED
data/README.md
CHANGED
@@ -6,48 +6,44 @@
|
|
6
6
|
|
7
7
|
Official Ruby API client for [Elastic Enterprise Search](https://www.elastic.co/enterprise-search). Use this gem to integrate App Search and Workplace Search into your Ruby code.
|
8
8
|
|
9
|
-
##
|
10
|
-
|
11
|
-
[See the documentation](https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/index.html) for compatibility info, configuring, and an API reference.
|
12
|
-
|
13
|
-
## Development
|
14
|
-
|
15
|
-
### Run Stack locally
|
9
|
+
## Installation
|
16
10
|
|
17
|
-
|
11
|
+
Install the `elastic-enterprise-search` gem from [Rubygems](https://rubygems.org/gems/elastic-enterprise-search):
|
18
12
|
|
19
13
|
```
|
20
|
-
$
|
14
|
+
$ gem install elastic-enterprise-search
|
21
15
|
```
|
22
16
|
|
23
|
-
|
24
|
-
- Username: `enterprise_search`
|
25
|
-
- Password: `changeme`
|
17
|
+
Or add it to your project's Gemfile:
|
26
18
|
|
27
|
-
|
19
|
+
```ruby
|
20
|
+
gem 'elastic-enterprise-search', 'VERSION'
|
21
|
+
```
|
28
22
|
|
29
|
-
|
23
|
+
The Enterprise Search client is implemented with [`elastic-transport`](https://github.com/elastic/elastic-transport-ruby/) as the HTTP layer, which uses [Faraday](https://rubygems.org/gems/faraday). Faraday supports several [adapters](https://lostisland.github.io/faraday/adapters/) and will use `Net::HTTP` by default. For optimal performance with the Enterprise Search API, we suggest using an HTTP library which supports persistent ("keep-alive") connections. For the standard Ruby implementation, this could be https://github.com/drbrain/net-http-persistent[Net::HTTP::Persistent], [patron](https://github.com/toland/patron) or [Typhoeus](https://github.com/typhoeus/typhoeus). For JRuby, [Manticore](https://github.com/cheald/manticore) is a great option as well. Require the library for the adapter in your code and then pass in the `:adapter` parameter to the client when you initialize it:
|
30
24
|
|
31
|
-
|
25
|
+
```ruby
|
26
|
+
require 'elastic-enterprise-search'
|
27
|
+
require 'faraday/net_http_persistent'
|
32
28
|
|
29
|
+
client = Elastic::EnterpriseSearch::Client.new(adapter: :net_http_persistent)
|
33
30
|
```
|
34
|
-
|
35
|
-
```
|
31
|
+
If an adapter is not specified, the client will try to auto-detect available libraries and use the best available HTTP client.
|
36
32
|
|
37
|
-
|
33
|
+
## Documentation
|
38
34
|
|
39
|
-
|
40
|
-
$ ELASTIC_ENTERPRISE_HOST='http://localhost:3002' \
|
41
|
-
ELASTIC_ENTERPRISE_USER='elastic' \
|
42
|
-
ELASTIC_ENTERPRISE_PASSWORD='changeme' \
|
43
|
-
rake spec:integration
|
44
|
-
```
|
35
|
+
[See the documentation](https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/index.html) for usage, code examples, configuring the client, and an API reference.
|
45
36
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
37
|
+
See code examples of usage for the [Enteprise Search](https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/enterprise-search-api.html), [App Search](https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/app-search-api.html) and [Workplace Search](https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/workplace-search-api.html) APIs.
|
38
|
+
|
39
|
+
## Compatibility
|
40
|
+
|
41
|
+
We follow Ruby’s own maintenance policy and officially support all currently maintained versions per [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/).
|
42
|
+
|
43
|
+
## Development
|
44
|
+
|
45
|
+
See [CONTRIBUTING](https://github.com/elastic/enterprise-search-ruby/blob/main/CONTRIBUTING.md).
|
50
46
|
|
51
47
|
## License
|
52
48
|
|
53
|
-
Apache
|
49
|
+
This software is licensed under the [Apache 2 license](./LICENSE). See [NOTICE](./NOTICE).
|
@@ -8,7 +8,7 @@ This document includes examples for different API requests. Please refer to the
|
|
8
8
|
[source,rb]
|
9
9
|
----------------------------
|
10
10
|
# Create an engine
|
11
|
-
client.create_engine(name: 'videogames')
|
11
|
+
client.create_engine(body: { name: 'videogames' })
|
12
12
|
|
13
13
|
# List all engines
|
14
14
|
client.list_engines
|
@@ -30,7 +30,7 @@ body = {
|
|
30
30
|
type: 'meta',
|
31
31
|
source_engines: [ 'books', 'videogames' ]
|
32
32
|
}
|
33
|
-
client.create_engine(
|
33
|
+
client.create_engine(body: body)
|
34
34
|
|
35
35
|
# Add a source engine to a meta engine:
|
36
36
|
client.add_meta_engine_source(meta_engine_name, source_engines: ['engine1', 'engine2'])
|
@@ -123,11 +123,13 @@ client.delete_synonym_set(engine_name, synonym_set_id: id)
|
|
123
123
|
----------------------------
|
124
124
|
# Create a curation
|
125
125
|
client.create_curation(
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
126
|
+
engine_name,
|
127
|
+
body: {
|
128
|
+
queries: ['query1'],
|
129
|
+
promoted: ['doc-id1'],
|
130
|
+
hidden: ['doc-id2']
|
131
|
+
}
|
132
|
+
)
|
131
133
|
|
132
134
|
# Retrieve a curation by id:
|
133
135
|
client.curation(engine_name, curation_id: 'cur-id')
|
@@ -135,10 +137,14 @@ client.curation(engine_name, curation_id: 'cur-id')
|
|
135
137
|
# Update an existing curation:
|
136
138
|
client.put_curation(
|
137
139
|
engine_name,
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
140
|
+
{
|
141
|
+
curation_id: 'cur-id',
|
142
|
+
body: {
|
143
|
+
queries: ['query1'],
|
144
|
+
promoted: ['doc-id2'],
|
145
|
+
hidden: ['doc-id1']
|
146
|
+
}
|
147
|
+
}
|
142
148
|
)
|
143
149
|
|
144
150
|
# List existing curations:
|
@@ -178,13 +184,6 @@ client.delete_api_key(api_key_name: name)
|
|
178
184
|
|
179
185
|
=== Web Crawler
|
180
186
|
|
181
|
-
[CAUTION]
|
182
|
-
====
|
183
|
-
The Elastic Enterprise Search web crawler API is a *beta* feature.
|
184
|
-
Beta features are subject to change and are not covered by the support SLA of general release (GA) features.
|
185
|
-
Elastic plans to promote this feature to GA in a future release.
|
186
|
-
====
|
187
|
-
|
188
187
|
See https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html[Web Crawler API reference] for more information.
|
189
188
|
|
190
189
|
[source,rb]
|
@@ -196,6 +195,9 @@ client.create_crawler_domain(engine_name, body: body)
|
|
196
195
|
# Get crawler domain information
|
197
196
|
client.crawler_domain(engine_name, domain_id: domain_id)
|
198
197
|
|
198
|
+
# List crawler domains
|
199
|
+
client.list_crawler_domains(engine_name)
|
200
|
+
|
199
201
|
# Update a crawler domain
|
200
202
|
body = { name: 'https://www.wikipedia.org' }
|
201
203
|
client.put_crawler_domain(engine_name, domain_id: domain_id, domain: body)
|
@@ -302,6 +304,38 @@ client.crawler_process_crawl_denied_urls(engine_name, process_crawl_id: id)
|
|
302
304
|
client.delete_crawler_active_crawl_request(engine_name)
|
303
305
|
----------------------------
|
304
306
|
|
307
|
+
=== Adaptive Relevance Suggestions
|
308
|
+
|
309
|
+
[source,rb]
|
310
|
+
----------------------------
|
311
|
+
# Update an adaptive relevance suggestion
|
312
|
+
body = [{ query: 'forest', type: 'curation', status: 'applied' }]
|
313
|
+
client.put_adaptive_relevance_suggestions(engine_name, body: body)
|
314
|
+
|
315
|
+
# Retrieve an adaptive relevance suggestion
|
316
|
+
client.adaptive_relevance_suggestions(engine_name, search_suggestion_query: 'test')
|
317
|
+
|
318
|
+
# List adaptive relevance suggestions
|
319
|
+
client.list_adaptive_relevance_suggestions(engine_name)
|
320
|
+
----------------------------
|
321
|
+
|
322
|
+
=== Adaptive Relevance Settings
|
323
|
+
|
324
|
+
[source,rb]
|
325
|
+
----------------------------
|
326
|
+
# Show the settings for an engine
|
327
|
+
client.adaptive_relevance_settings(engine_name)
|
328
|
+
|
329
|
+
# Update relevance settings
|
330
|
+
body = {
|
331
|
+
curation: { enabled: true }
|
332
|
+
}
|
333
|
+
client.put_adaptive_relevance_settings(engine_name, body: body)
|
334
|
+
|
335
|
+
# Refresh adaptive relevance update process
|
336
|
+
client.refresh_adaptive_relevance_update_process(engine_name, adaptive_relevance_suggestion_type: 'curation')
|
337
|
+
----------------------------
|
338
|
+
|
305
339
|
=== Other API Endpoints
|
306
340
|
|
307
341
|
[source,rb]
|
@@ -14,11 +14,20 @@ For **Elastic Enterprise Search 7.0** and later, use the major version 7 (`7.x.y
|
|
14
14
|
|
15
15
|
[discrete]
|
16
16
|
=== HTTP Library
|
17
|
-
This library uses https://github.com/elastic/elasticsearch-ruby/tree/main/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
17
|
|
19
|
-
|
18
|
+
This library uses https://github.com/elastic/elastic-transport-ruby[elastic-transport], the low-level Ruby client for connecting to an Elastic clusters - also used in the official https://github.com/elastic/elasticsearch-ruby[Elasticsearch Ruby Client]. It uses https://rubygems.org/gems/faraday[Faraday], which supports several https://lostisland.github.io/faraday/adapters/[adapters] and will use `Net::HTTP` by default. For optimal performance with the Enterprise Search API, we suggest using an HTTP library which supports persistent ("keep-alive") connections. For the standard Ruby implementation, this could be https://github.com/drbrain/net-http-persistent[Net::HTTP::Persistent], https://github.com/toland/patron[patron] or https://github.com/typhoeus/typhoeus[Typhoeus]. For JRuby, https://github.com/cheald/manticore[Manticore] is a great option as well. Require the library for the adapter in your code and then pass in the `:adapter` parameter to the client when you initialize it:
|
20
19
|
|
21
|
-
|
20
|
+
[source,ruby]
|
21
|
+
---------------------------------------------------
|
22
|
+
require 'elastic-enterprise-search'
|
23
|
+
require 'faraday/net_http_persistent'
|
24
|
+
|
25
|
+
client = Elastic::EnterpriseSearch::Client.new(adapter: :net_http_persistent)
|
26
|
+
---------------------------------------------------
|
27
|
+
|
28
|
+
All requests, if successful, will return an `Elastic::Transport::Transport::Response` instance. You can access the response `body`, `headers` and `status`.
|
29
|
+
|
30
|
+
`elastic-transport` defines a https://github.com/elastic/elastic-transport-ruby/blob/main/lib/elastic/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/elastic-transport-ruby#exception-handling[here]. You can find the full documentation for `elastic-transport` at https://rubydoc.info/gems/elastic-transport[RubyDoc].
|
22
31
|
|
23
32
|
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
33
|
|
@@ -30,7 +39,7 @@ If you don't specify a host and port, the client will default to `http://localho
|
|
30
39
|
[discrete]
|
31
40
|
=== Logging
|
32
41
|
|
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:
|
42
|
+
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, any confoming logger implementation:
|
34
43
|
|
35
44
|
[source,rb]
|
36
45
|
----------------------------
|
@@ -38,6 +47,20 @@ logger = MyLogger.new
|
|
38
47
|
client = Elastic::EnterpriseSearch::Client.new(logger: logger)
|
39
48
|
----------------------------
|
40
49
|
|
50
|
+
To trace requests and responses in the _Curl_ format, set the `trace` argument:
|
51
|
+
|
52
|
+
[source,rb]
|
53
|
+
----------------------------
|
54
|
+
client = Elastic::EnterpriseSearch::Client.new(trace: true)
|
55
|
+
----------------------------
|
56
|
+
|
57
|
+
This will use the `elastic-transport` default logger. But you can pass in a custom logger with:
|
58
|
+
|
59
|
+
[source,rb]
|
60
|
+
----------------------------
|
61
|
+
client = Elastic::EnterpriseSearch::Client.new(tracer: my_tracer)
|
62
|
+
----------------------------
|
63
|
+
|
41
64
|
[discrete]
|
42
65
|
=== License
|
43
66
|
|
@@ -26,3 +26,13 @@
|
|
26
26
|
|
27
27
|
- Updates source code documentation for `current_page` and `page_size` parameters from type `String` to `Integer`.
|
28
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
|
+
----------------------------
|
@@ -1,16 +1,4 @@
|
|
1
1
|
[[release_notes_714]]
|
2
|
-
=== 7.14 Release notes
|
3
|
-
|
4
|
-
[discrete]
|
5
|
-
[[release_notes_7141]]
|
6
|
-
=== 7.14.1 Release notes
|
7
|
-
|
8
|
-
==== Dependency fix
|
9
|
-
|
10
|
-
Updates dependency on `elasticsearch-transport` to be more open. At least 7.11 is required, but this way it can be used with different versions of the `elasticsearch` gem (bigger than or equal to `7.11`) in the same project, without a conflict in `elasticsearch-transport`. When instantiating transport, we now check if version is `< 7.14` so we use the right class.
|
11
|
-
|
12
|
-
[discrete]
|
13
|
-
[[release_notes_7140]]
|
14
2
|
=== 7.14.0 Release notes
|
15
3
|
|
16
4
|
[discrete]
|
@@ -1,16 +1,4 @@
|
|
1
1
|
[[release_notes_715]]
|
2
|
-
=== 7.15 Release notes
|
3
|
-
|
4
|
-
[discrete]
|
5
|
-
[[release_notes_7151]]
|
6
|
-
=== 7.15.1 Release notes
|
7
|
-
|
8
|
-
==== Dependency fix
|
9
|
-
|
10
|
-
Updates dependency on `elasticsearch-transport` to be more open. At least 7.11 is required, but this way it can be used with different versions of the `elasticsearch` gem (bigger than or equal to `7.11`) in the same project, without a conflict in `elasticsearch-transport`. When instantiating transport, we now check if version is `< 7.14` so we use the right class.
|
11
|
-
|
12
|
-
[discrete]
|
13
|
-
[[release_notes_7150]]
|
14
2
|
=== 7.15.0 Release notes
|
15
3
|
|
16
4
|
[discrete]
|
@@ -0,0 +1,128 @@
|
|
1
|
+
[[release_notes_80]]
|
2
|
+
=== 8.0 Release notes
|
3
|
+
|
4
|
+
[discrete]
|
5
|
+
[[release_notes_801]]
|
6
|
+
=== 8.0.1 Release notes
|
7
|
+
|
8
|
+
- Adds tracer parameters to enable tracing in elastic-transport. See https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/overview.html#_logging[logging] for more information.
|
9
|
+
- Updates Workplace Search OAuth implementation. See https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/workplace-search-api.html#ws-oauth-authentication[OAuth Authentication] for changes in the OAuth process.
|
10
|
+
|
11
|
+
[discrete]
|
12
|
+
[[release_notes_800]]
|
13
|
+
=== 8.0.0 Release notes
|
14
|
+
|
15
|
+
[discrete]
|
16
|
+
==== General
|
17
|
+
|
18
|
+
First release in the `8.x` branch of the client.
|
19
|
+
|
20
|
+
- Tested with Elastic Enterprise Search API version 8.0-SNAPSHOT.
|
21
|
+
- Tested with Ruby 2.7, 3.0, 3.1, JRuby 9.3. Older versions of Ruby have reached end of life and been removed from the testing matrices. Minimum required Ruby version is Ruby 2.6 to keep compatibility with JRuby 9.3, but it may be upgraded to 2.7 once JRuby 9.4 comes out.
|
22
|
+
- API: Updated endpoints that make a `GET` or `DELETE` requests to not have a `body`. Requests with `PUT` and `POST` now expect most parameters to be in the request body. Parameters that were available as both arguments and in the body are now just in the body.
|
23
|
+
- API: An updated generator is being used to generate the endpoint code. The source code documentation has better typing hints for parameters.
|
24
|
+
|
25
|
+
[discrete]
|
26
|
+
==== Response Object
|
27
|
+
|
28
|
+
* Requests now return an `Elastic::API::Response` object. This behaves exactly the same as the previous response (`Elastic::Transport::Transport::Response`) but expands its functionality. With the previous response object, the body of the response had to be accessed calling the `body` method on the response. This new object behaves like the response.body Hash object, except when the `status` or `headers` are sent to it. This makes it easier to access the response data. Example:
|
29
|
+
|
30
|
+
+
|
31
|
+
[source,rb]
|
32
|
+
----------------------------
|
33
|
+
client = Elastic::EnterpriseSearch::Client.new(
|
34
|
+
host: 'http://localhost:3002',
|
35
|
+
http_auth: {user: 'elastic', password: 'changeme'}
|
36
|
+
)
|
37
|
+
response = client.health
|
38
|
+
response.class
|
39
|
+
# => Elastic::API::Response
|
40
|
+
response['version']['number']
|
41
|
+
# => "8.1.4"
|
42
|
+
response.body['version']['number']
|
43
|
+
# => "8.1.4"
|
44
|
+
response.status
|
45
|
+
# => 200
|
46
|
+
response.headers
|
47
|
+
# =>
|
48
|
+
{"date"=>"Tue, 10 May 2022 09:01:10 GMT",
|
49
|
+
"content-type"=>"application/json;charset=utf-8",
|
50
|
+
"etag"=>"W/\"etag--gzip\"",
|
51
|
+
"cache-control"=>"max-age=0, private, must-revalidate",
|
52
|
+
"x-request-id"=>"id",
|
53
|
+
"x-runtime"=>"0.023468",
|
54
|
+
"vary"=>"Accept-Encoding, User-Agent",
|
55
|
+
"content-length"=>"755",
|
56
|
+
"server"=>"Jetty(9.4.43.v20210629)"}
|
57
|
+
----------------------------
|
58
|
+
|
59
|
+
[discrete]
|
60
|
+
==== App Search
|
61
|
+
|
62
|
+
[discrete]
|
63
|
+
===== API Changes
|
64
|
+
|
65
|
+
- API Logs: Removes `date` parameters for filters. This API requires a nested date object under `filters` (now passed in via the body) containing `from` and `to` keys formatted in accordance with RFC3339. The App Search client provides the helper function `date_to_rfc3339` which receives a date String and converts it to the right format.
|
66
|
+
- Crawler API : Internal Url updated from `v0` to `v1`. `create_crawler_crawl_rule` body is a required parameter (`order`, `policy`, `rule`, `pattern`). `create_crawler_entry_point` body is required (for `value`). `create_crawler_sitemap` body is required (for `url`). `put_crawler_crawl_rule` body is required (`order`, `policy`, `rule`, `pattern`). `put_crawler_crawl_schedule` body is required (`frequency`, `unit`). `put_crawler_entry_point` body is required (for `value`). `put_crawler_sitemap` body is required (`url`).
|
67
|
+
- Curations API: parameters for `create_curation` and `put_curation` must be passed in inside the body parameter now.
|
68
|
+
- Engine APIs: `create_engine` removes the `name` parameter. It must be passed in inside the body parameter now.
|
69
|
+
- Log Click: `log_clickthrough` now requires `body`, the parameter `query` and `document_id` are required.
|
70
|
+
- Search: When using `search`, query can no longer be sent as an argument. The method will raise `ArgumentError` if no body is sent, since `query` is a required parameter in the body.
|
71
|
+
- APIs where `body` has been removed since it's not used: `delete_engine`, `engine`, `list_engines`, `curation`, `delete_curation`, `schema`, `api_key`, `delete_api_key`, `list_api_keys`, `delete_synonym_set`, `list_synonym_set`, `synonym_set`, `list_documents`, `reset_search_settings`, `search_settings`, `crawler_active_crawl_request`, `crawler_crawl_request`, `crawler_crawl_schedule`, `crawler_domain`, `crawler_metrics`, `crawler_overview`, `crawler_process_crawl`, `crawler_process_crawl_denied_urls`, `crawler_user_agent`, `delete_crawler_active_crawl_request`, `delete_crawler_crawl_rule`, `delete_crawler_crawl_schedule`, `delete_crawler_domain`, `delete_crawler_entry_point`, `delete_crawler_sitemap`, `list_crawler_crawl_requests`, `list_crawler_process_crawls`.
|
72
|
+
|
73
|
+
[discrete]
|
74
|
+
===== New APIs
|
75
|
+
|
76
|
+
* `list_crawler_domain`: Lists crawler domains given an engine.
|
77
|
+
* Adaptive Relevance Suggestion APIs:
|
78
|
+
** `adaptive_relevance_suggestions` - Retrieves adaptive relevance for a single query.
|
79
|
+
** `list_adaptive_relevance_suggestions` - List the adaptive relevance suggestions for a given engine.
|
80
|
+
** `put_adaptive_relevance_suggestions` - Update adaptive relevance.
|
81
|
+
* Adaptive Relevance Settings APIs:
|
82
|
+
** `adaptive_relevance_settings` - Retrieve adaptive relevance settings.
|
83
|
+
** `put_adaptive_relevance_settings` - Update adaptive relevance settings.
|
84
|
+
** `refresh_adaptive_relevance_update_process` - Update suggestions process refresh.
|
85
|
+
|
86
|
+
[discrete]
|
87
|
+
==== Enterprise Search
|
88
|
+
|
89
|
+
- Read-Only API: `put_read_only` body is now required with the enabled object: `{enabled: true|false}`.
|
90
|
+
- APIs where `body` has been removed since it's not used: `health`, `read_only`, `stats`, `version`.
|
91
|
+
|
92
|
+
[discrete]
|
93
|
+
==== Workplace Search
|
94
|
+
|
95
|
+
[discrete]
|
96
|
+
===== API Changes
|
97
|
+
|
98
|
+
* Permissions APIs have been removed: `add_user_permissions`, `list_permissions`, `put_user_permissions`, `remove_user_permissions`, `user_permissions`.
|
99
|
+
* `current_user` removed `get_token` parameter.
|
100
|
+
* Analytics: `create_analytics_events` will raise ArgumentError if body is missing (Required: type, query_id, page, content_source_id, document_id, rank)
|
101
|
+
* Content Sources: `create_content_source` will raise ArgumentError if body is missing (Required: name). `name` cannot be passed in as a parameter anymore, needs to be in the body. `put_content_source` will raise ArgumentError if body is missing (Required: name, is_searchable). `put_content_source_icons` will raise ArgumentError if body is missing.
|
102
|
+
* External Identities: `create_external_identity` will raise ArgumentError if body is missing (Required: external_user_id, external_user_properties, permissions). Body parameters have changed:
|
103
|
+
|
104
|
+
+
|
105
|
+
[source,rb]
|
106
|
+
----------------------------
|
107
|
+
body = {
|
108
|
+
external_user_id: external_user_id,
|
109
|
+
permissions: [],
|
110
|
+
external_user_properties: [
|
111
|
+
'attribute_name' => '_elasticsearch_username',
|
112
|
+
'attribute_value' => 'fernando'
|
113
|
+
]
|
114
|
+
}
|
115
|
+
client.create_external_identity(content_source_id, body: body)
|
116
|
+
----------------------------
|
117
|
+
+
|
118
|
+
In `delete_external_identity`, `external_identity` and `put_external_identity` the required parameter changed from `user` to `external_user_id`.
|
119
|
+
See https://www.elastic.co/guide/en/workplace-search/current/workplace-search-external-identities-api.html
|
120
|
+
* Search: Parameters need to be passed in via body to `search`. It will raise ArgumentError if body is missing.
|
121
|
+
* Documents: `delete_documents` will raise ArgumentError if body is missing (Required document_ids).
|
122
|
+
* Sync Jobs: `command_sync_jobs` will raise ArgumentError if body is missing.
|
123
|
+
* Synonyms: `create_batch_synonym_sets`, `put_synonym_set` will raise ArgumentError if body is missing.
|
124
|
+
* APIs where `body` has been removed since it's not used: `auto_query_refinement_details`, `content_source`, `current_user`, `delete_content_source`, `delete_external_identity`, `delete_synonym_set`, `document`, `external_identity`, `list_content_sources`, `list_external_identities`, `put_triggers_blocklist`, `synonym_set`, `triggers_blocklist`.
|
125
|
+
|
126
|
+
[discrete]
|
127
|
+
===== New APIs
|
128
|
+
- `list_documents`: Lists documents from a custom content source.
|
@@ -1,6 +1,9 @@
|
|
1
1
|
[[release_notes]]
|
2
2
|
== Release Notes
|
3
3
|
|
4
|
+
[discrete]
|
5
|
+
=== 8.x
|
6
|
+
* <<release_notes_80, 8.0.0 Release Notes>>
|
4
7
|
|
5
8
|
[discrete]
|
6
9
|
=== 7.x
|
@@ -14,6 +17,7 @@
|
|
14
17
|
* <<release_notes_711, 7.11.0 Release Notes>>
|
15
18
|
* <<release_notes_710, 7.10.0.beta.1 Release Notes>>
|
16
19
|
|
20
|
+
include::80.asciidoc[]
|
17
21
|
include::717.asciidoc[]
|
18
22
|
include::716.asciidoc[]
|
19
23
|
include::715.asciidoc[]
|