elastic-enterprise-search 7.15.0 → 7.15.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.github/compatibility/Gemfile +23 -0
  3. data/.github/workflows/compatibility.yml +20 -0
  4. data/docs/guide/release_notes/714.asciidoc +12 -0
  5. data/docs/guide/release_notes/715.asciidoc +12 -0
  6. data/elastic-enterprise-search.gemspec +1 -1
  7. data/lib/elastic/enterprise-search/client.rb +12 -1
  8. data/lib/elastic/enterprise-search/version.rb +1 -1
  9. data/spec/integration/app-search/api_key_spec.rb +1 -1
  10. data/spec/integration/app-search/api_logs_spec.rb +1 -1
  11. data/spec/integration/app-search/app_search_helper.rb +13 -1
  12. data/spec/integration/app-search/count_analytics_spec.rb +1 -1
  13. data/spec/integration/app-search/crawl_requests_spec.rb +1 -1
  14. data/spec/integration/app-search/crawler_crawl_rule_spec.rb +1 -1
  15. data/spec/integration/app-search/crawler_domain_spec.rb +1 -1
  16. data/spec/integration/app-search/crawler_entry_point_spec.rb +2 -14
  17. data/spec/integration/app-search/crawler_metrics_spec.rb +1 -1
  18. data/spec/integration/app-search/crawler_overview_spec.rb +1 -1
  19. data/spec/integration/app-search/crawler_process_crawl_denied_urls_spec.rb +1 -1
  20. data/spec/integration/app-search/crawler_process_crawl_spec.rb +1 -1
  21. data/spec/integration/app-search/crawler_scheduling_spec.rb +2 -14
  22. data/spec/integration/app-search/crawler_sitemap_spec.rb +1 -1
  23. data/spec/integration/app-search/crawler_urls_spec.rb +1 -1
  24. data/spec/integration/app-search/curations_spec.rb +1 -1
  25. data/spec/integration/app-search/documents_spec.rb +1 -1
  26. data/spec/integration/app-search/engines_spec.rb +2 -1
  27. data/spec/integration/app-search/log_clickthrough_spec.rb +1 -1
  28. data/spec/integration/app-search/query_suggestion_spec.rb +1 -1
  29. data/spec/integration/app-search/schema_spec.rb +1 -1
  30. data/spec/integration/app-search/search_and_multiple_search_spec.rb +1 -1
  31. data/spec/integration/app-search/search_settings_spec.rb +1 -1
  32. data/spec/integration/app-search/synonyms_spec.rb +1 -1
  33. data/spec/integration/app-search/top_clicks_analytics_spec.rb +1 -1
  34. data/spec/integration/app-search/top_queries_analytics_spec.rb +1 -1
  35. metadata +8 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ebc1dd416a61d523f8de08fe29e3308539cce59a55a9edcbffc7997c85910d5
4
- data.tar.gz: 2dd11f3198ee70cea2d7f9d76f4d411ee47160b5e4d0ba1a32080cc830301b5d
3
+ metadata.gz: af43f95c32828fa2a4c5d44f12f430ebaf6ca3ec3fee1f1d6c48b02348e15bee
4
+ data.tar.gz: eb3df761787c3e537cff53bb50c2a44eedacb4dc99c4c609b303bd1ef3734c3d
5
5
  SHA512:
6
- metadata.gz: d9d5499b123c3d026d2c2dbde6a0a9952321c3b2befd12cd42199d3d032d26f65a02e371bc32ceb9a9f3bcb3c085e83aed2ad5b292b43aeed6bdf5db37878744
7
- data.tar.gz: d212455f5c39d99eea502669241b4dbd848615e0de15109b764465d124b003696d0dd0737a276f294ac0ee9a17b56027dd711c6e1f1cd615aec09005bf30dadd
6
+ metadata.gz: 50e6b28a6b395d26ea2bde7a00211b381d85d3483cda75b6d254d53b14f076c07f88306e2dea718a409ad8412faedfd2dd59062e4a75712bd5071ea6fba0901a
7
+ data.tar.gz: 8a38e574a9a7877afa2aa7bcc1ca377ebff4d71c122dec2c8b43bf9e441ef89f908a42055b42f111e9bfa1db24423819e4da867f8575f74350f7adf91d2dc810
@@ -0,0 +1,23 @@
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
+ source 'https://rubygems.org'
21
+
22
+ gem 'elasticsearch', ENV['es-version']
23
+ gem 'elastic-enterprise-search', path: File.expand_path('../../', __dir__)
@@ -0,0 +1,20 @@
1
+ name: Compatibility with Elasticsearch
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ elasticsearch:
6
+ env:
7
+ ES_VERSION: ${{ matrix.es_version }}
8
+ strategy:
9
+ matrix:
10
+ es_version: [ 7.11, 7.12, 7.13, 7.14, 7.15 ]
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 3.0
17
+ - name: Build Gemfile with Elasticsearch gem
18
+ run: |
19
+ ruby -v
20
+ cd ./.github/compatibility/ && bundle
@@ -1,4 +1,16 @@
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]]
2
14
  === 7.14.0 Release notes
3
15
 
4
16
  [discrete]
@@ -1,4 +1,16 @@
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]]
2
14
  === 7.15.0 Release notes
3
15
 
4
16
  [discrete]
@@ -47,7 +47,7 @@ Gem::Specification.new do |s|
47
47
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
48
48
  s.require_paths = ['lib']
49
49
 
50
- s.add_dependency 'elasticsearch-transport', '~> 7.13.0'
50
+ s.add_dependency 'elasticsearch-transport', '>= 7.11'
51
51
  s.add_runtime_dependency 'jwt', '>= 1.5', '< 3.0'
52
52
  s.add_development_dependency 'awesome_print'
53
53
  s.add_development_dependency 'byebug' unless defined?(JRUBY_VERSION)
@@ -67,7 +67,7 @@ module Elastic
67
67
 
68
68
  def transport
69
69
  @options[:transport] ||
70
- Elasticsearch::Client.new(
70
+ transport_klass.new(
71
71
  host: host,
72
72
  log: log,
73
73
  logger: logger,
@@ -110,6 +110,17 @@ module Elastic
110
110
 
111
111
  @options[:host]
112
112
  end
113
+
114
+ private
115
+
116
+ def transport_klass
117
+ case Elasticsearch::Transport::VERSION
118
+ when /7\.1[123]/
119
+ Elasticsearch::Client
120
+ else
121
+ Elasticsearch::Transport::Client
122
+ end
123
+ end
113
124
  end
114
125
  end
115
126
  end
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Elastic
21
21
  module EnterpriseSearch
22
- VERSION = '7.15.0'
22
+ VERSION = '7.15.1'
23
23
  end
24
24
  end
@@ -66,7 +66,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
66
66
  engine_name = 'update-engine'
67
67
  body = { name: key_name, type: 'private', read: true, write: true, access_all_engines: true }
68
68
  client.create_api_key(body: body)
69
- client.create_engine(name: engine_name)
69
+ create_engine(engine_name)
70
70
 
71
71
  body = { name: key_name, type: 'private', read: true, write: true, engines: [engine_name] }
72
72
  attempts = 0
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:api_key_name) { 'logs-api-key' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  # Create API Key Client to log events:
30
30
  body = { name: api_key_name, type: 'private', read: true, write: true, access_all_engines: true }
31
31
  api_key = client.create_api_key(body: body).body['key']
@@ -18,6 +18,7 @@
18
18
  # frozen_string_literal: true
19
19
 
20
20
  require 'spec_helper'
21
+ require 'logger'
21
22
 
22
23
  # App Search Integration tests Client Configuration
23
24
  def client
@@ -34,6 +35,17 @@ def delete_engines
34
35
  engines = client.list_engines.body['results']
35
36
  engines.each do |engine|
36
37
  client.delete_engine(engine['name'])
38
+ # Gives time to the server to sync:
39
+ sleep 2
37
40
  end
38
- sleep 1
41
+ end
42
+
43
+ def create_engine(name)
44
+ client.create_engine(name: name)
45
+ rescue Elasticsearch::Transport::Transport::Errors::BadRequest => e
46
+ raise e unless e.message.match(/Name is already taken/)
47
+
48
+ Logger.new($stdout).info("Engine '#{name}' had already been created, giving time for the server to sync.")
49
+ sleep 5
50
+ client.create_engine(name: name)
39
51
  end
@@ -23,7 +23,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
23
23
  let(:engine_name) { 'count-analytics' }
24
24
 
25
25
  before do
26
- client.create_engine(name: engine_name)
26
+ create_engine(engine_name)
27
27
  sleep 1
28
28
  end
29
29
 
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  end
30
30
 
31
31
  after do
@@ -25,26 +25,14 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- attempts = 0
29
- loop do
30
- attempts += 1
31
- client.create_engine(name: engine_name)
32
- break if attempts > 9
33
- rescue Elasticsearch::Transport::Transport::Errors::BadRequest => e
34
- if e.message.match?(/Name is already taken/)
35
- sleep 1
36
- next
37
- end
38
- else
39
- break
40
- end
28
+ create_engine(engine_name)
41
29
  body = { name: name }
42
30
  response = client.create_crawler_domain(engine_name, body: body)
43
31
  @domain = response.body
44
32
  end
45
33
 
46
34
  after do
47
- client.delete_engine(engine_name)
35
+ delete_engines
48
36
  end
49
37
 
50
38
  it 'creates an entry point' do
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -26,26 +26,14 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
26
26
  let(:name) { 'https://www.elastic.co' }
27
27
 
28
28
  before do
29
- attempts = 0
30
- loop do
31
- attempts += 1
32
- client.create_engine(name: engine_name)
33
- break if attempts > 9
34
- rescue Elasticsearch::Transport::Transport::Errors::BadRequest => e
35
- if e.message.match?(/Name is already taken/)
36
- sleep 1
37
- next
38
- end
39
- else
40
- break
41
- end
29
+ create_engine(engine_name)
42
30
  body = { name: name }
43
31
  response = client.create_crawler_domain(engine_name, body: body)
44
32
  @domain = response.body
45
33
  end
46
34
 
47
35
  after do
48
- client.delete_engine(engine_name)
36
+ delete_engines
49
37
  end
50
38
 
51
39
  it 'sets a crawl schedule' do
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -25,7 +25,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
25
25
  let(:name) { 'https://www.elastic.co' }
26
26
 
27
27
  before do
28
- client.create_engine(name: engine_name)
28
+ create_engine(engine_name)
29
29
  body = { name: name }
30
30
  response = client.create_crawler_domain(engine_name, body: body)
31
31
  @domain = response.body
@@ -24,7 +24,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
24
24
  let(:engine_name) { 'books' }
25
25
 
26
26
  before do
27
- client.create_engine(name: engine_name)
27
+ create_engine(engine_name)
28
28
  documents = [
29
29
  { title: 'Jungle Tales', author: 'Horacio Quiroga' },
30
30
  { title: 'The Jungle Book', author: 'Rudyard Kipling' }
@@ -32,7 +32,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
32
32
  end
33
33
 
34
34
  before do
35
- client.create_engine(name: engine_name)
35
+ create_engine(engine_name)
36
36
  end
37
37
 
38
38
  after do
@@ -58,9 +58,9 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
58
58
  end
59
59
 
60
60
  it 'retrieves an engine by name' do
61
+ engine_name = 'retrieve-engine'
61
62
  client.create_engine(name: engine_name)
62
63
  response = client.engine(engine_name)
63
-
64
64
  expect(response.status).to eq 200
65
65
  expect(response.body).to eq(
66
66
  { 'name' => engine_name, 'type' => 'default', 'language' => nil, 'document_count' => 0 }
@@ -68,6 +68,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
68
68
  end
69
69
 
70
70
  it 'deletes an engine' do
71
+ engine_name = 'delete-engine'
71
72
  client.create_engine(name: engine_name)
72
73
  response = client.delete_engine(engine_name)
73
74
  expect(response.status).to eq 200
@@ -24,7 +24,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
24
24
  let(:engine_name) { 'videogames' }
25
25
 
26
26
  before do
27
- client.create_engine(name: engine_name)
27
+ create_engine(engine_name)
28
28
  end
29
29
 
30
30
  after do
@@ -24,7 +24,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
24
24
  let(:engine_name) { 'query-suggestions' }
25
25
 
26
26
  before do
27
- client.create_engine(name: engine_name)
27
+ create_engine(engine_name)
28
28
  end
29
29
 
30
30
  after do
@@ -23,7 +23,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
23
23
  let(:engine_name) { 'schema' }
24
24
 
25
25
  before do
26
- client.create_engine(name: engine_name)
26
+ create_engine(engine_name)
27
27
  client.index_documents(engine_name, documents: [{ title: 'test', director: 'someone' }])
28
28
  end
29
29
 
@@ -33,7 +33,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
33
33
  end
34
34
 
35
35
  before do
36
- client.create_engine(name: engine_name)
36
+ create_engine(engine_name)
37
37
  client.index_documents(engine_name, documents: documents)
38
38
  sleep 1
39
39
  end
@@ -23,7 +23,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
23
23
  let(:engine_name) { 'search-settings' }
24
24
 
25
25
  before do
26
- client.create_engine(name: engine_name)
26
+ create_engine(engine_name)
27
27
  end
28
28
 
29
29
  after do
@@ -23,7 +23,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
23
23
  let(:engine_name) { 'synonyms' }
24
24
 
25
25
  before do
26
- client.create_engine(name: engine_name)
26
+ create_engine(engine_name)
27
27
  end
28
28
 
29
29
  after do
@@ -24,7 +24,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
24
24
  let(:engine_name) { 'top-clicks-analytics' }
25
25
 
26
26
  before do
27
- client.create_engine(name: engine_name)
27
+ create_engine(engine_name)
28
28
  end
29
29
 
30
30
  after do
@@ -23,7 +23,7 @@ describe Elastic::EnterpriseSearch::AppSearch::Client do
23
23
  let(:engine_name) { 'top-queries-analytics' }
24
24
 
25
25
  before do
26
- client.create_engine(name: engine_name)
26
+ create_engine(engine_name)
27
27
  end
28
28
 
29
29
  after do
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic-enterprise-search
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.15.0
4
+ version: 7.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fernando Briano
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-29 00:00:00.000000000 Z
11
+ date: 2021-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elasticsearch-transport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 7.13.0
19
+ version: '7.11'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 7.13.0
26
+ version: '7.11'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jwt
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -175,7 +175,9 @@ files:
175
175
  - ".ci/run-tests"
176
176
  - ".ci/test-matrix.yml"
177
177
  - ".github/check_license_headers.rb"
178
+ - ".github/compatibility/Gemfile"
178
179
  - ".github/license-header.txt"
180
+ - ".github/workflows/compatibility.yml"
179
181
  - ".github/workflows/license.yml"
180
182
  - ".github/workflows/rubocop.yml"
181
183
  - ".github/workflows/testing.yml"