elastic-enterprise-search 7.13.0 → 7.15.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (210) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/functions/imports.sh +1 -0
  3. data/.ci/jobs/defaults.yml +4 -0
  4. data/.ci/jobs/{elastic+enterprise-search-ruby+master.yml → elastic+enterprise-search-ruby+main.yml} +4 -4
  5. data/.ci/make.sh +162 -0
  6. data/.ci/run-repository.sh +2 -1
  7. data/.ci/test-matrix.yml +5 -3
  8. data/.github/check_license_headers.rb +33 -0
  9. data/{spec/app-search/api_logs_spec.rb → .github/compatibility/Gemfile} +3 -16
  10. data/.github/license-header.txt +16 -0
  11. data/.github/workflows/compatibility.yml +20 -0
  12. data/.github/workflows/license.yml +13 -0
  13. data/.github/workflows/testing.yml +1 -1
  14. data/CONTRIBUTING.md +1 -1
  15. data/README.md +1 -1
  16. data/Rakefile +20 -0
  17. data/docs/guide/app-search-api.asciidoc +157 -1
  18. data/docs/guide/overview.asciidoc +3 -3
  19. data/docs/guide/release_notes/712.asciidoc +12 -0
  20. data/docs/guide/release_notes/714.asciidoc +33 -0
  21. data/docs/guide/release_notes/715.asciidoc +48 -0
  22. data/docs/guide/release_notes/index.asciidoc +4 -0
  23. data/docs/guide/workplace-search-api.asciidoc +69 -0
  24. data/elastic-enterprise-search.gemspec +1 -1
  25. data/lib/elastic/app-search/api/add_meta_engine_source.rb +3 -2
  26. data/lib/elastic/app-search/api/api_key.rb +52 -0
  27. data/lib/elastic/app-search/api/api_logs.rb +14 -13
  28. data/lib/elastic/app-search/api/count_analytics.rb +7 -6
  29. data/lib/elastic/app-search/api/crawler_active_crawl_request.rb +51 -0
  30. data/lib/elastic/app-search/api/crawler_crawl_request.rb +54 -0
  31. data/lib/elastic/app-search/api/crawler_crawl_schedule.rb +51 -0
  32. data/lib/elastic/app-search/api/crawler_domain.rb +54 -0
  33. data/lib/elastic/app-search/api/crawler_domain_validation_result.rb +48 -0
  34. data/lib/elastic/app-search/api/crawler_metrics.rb +48 -0
  35. data/lib/elastic/app-search/api/crawler_overview.rb +51 -0
  36. data/lib/elastic/app-search/api/crawler_process_crawl.rb +54 -0
  37. data/lib/elastic/app-search/api/crawler_process_crawl_denied_urls.rb +54 -0
  38. data/lib/elastic/app-search/api/crawler_url_extraction_result.rb +52 -0
  39. data/lib/elastic/app-search/api/crawler_url_tracing_result.rb +52 -0
  40. data/lib/elastic/app-search/api/crawler_url_validation_result.rb +52 -0
  41. data/lib/elastic/app-search/api/crawler_user_agent.rb +48 -0
  42. data/lib/elastic/app-search/api/create_api_key.rb +57 -0
  43. data/lib/elastic/app-search/api/create_crawler_crawl_request.rb +51 -0
  44. data/lib/elastic/app-search/api/create_crawler_crawl_rule.rb +59 -0
  45. data/lib/elastic/app-search/api/create_crawler_domain.rb +55 -0
  46. data/lib/elastic/app-search/api/create_crawler_entry_point.rb +56 -0
  47. data/lib/elastic/app-search/api/create_crawler_process_crawl.rb +53 -0
  48. data/lib/elastic/app-search/api/create_crawler_sitemap.rb +56 -0
  49. data/lib/elastic/app-search/api/create_curation.rb +7 -6
  50. data/lib/elastic/app-search/api/create_engine.rb +9 -7
  51. data/lib/elastic/app-search/api/create_synonym_set.rb +7 -4
  52. data/lib/elastic/app-search/api/curation.rb +4 -3
  53. data/lib/elastic/app-search/api/delete_active_crawl_request.rb +51 -0
  54. data/lib/elastic/app-search/api/delete_api_key.rb +52 -0
  55. data/lib/elastic/app-search/api/delete_crawler_active_crawl_request.rb +51 -0
  56. data/lib/elastic/app-search/api/delete_crawler_crawl_rule.rb +57 -0
  57. data/lib/elastic/app-search/api/delete_crawler_crawl_schedule.rb +51 -0
  58. data/lib/elastic/app-search/api/delete_crawler_domain.rb +54 -0
  59. data/lib/elastic/app-search/api/delete_crawler_entry_point.rb +57 -0
  60. data/lib/elastic/app-search/api/delete_crawler_sitemap.rb +57 -0
  61. data/lib/elastic/app-search/api/delete_curation.rb +4 -3
  62. data/lib/elastic/app-search/api/delete_documents.rb +2 -1
  63. data/lib/elastic/app-search/api/delete_engine.rb +3 -2
  64. data/lib/elastic/app-search/api/delete_meta_engine_source.rb +3 -3
  65. data/lib/elastic/app-search/api/delete_synonym_set.rb +4 -3
  66. data/lib/elastic/app-search/api/denied_urls.rb +54 -0
  67. data/lib/elastic/app-search/api/documents.rb +3 -2
  68. data/lib/elastic/app-search/api/engine.rb +3 -2
  69. data/lib/elastic/app-search/api/index_documents.rb +3 -2
  70. data/lib/elastic/app-search/api/list_api_keys.rb +50 -0
  71. data/lib/elastic/app-search/api/list_crawler_crawl_requests.rb +52 -0
  72. data/lib/elastic/app-search/api/list_crawler_process_crawls.rb +51 -0
  73. data/lib/elastic/app-search/api/list_curations.rb +3 -2
  74. data/lib/elastic/app-search/api/list_documents.rb +3 -2
  75. data/lib/elastic/app-search/api/list_engines.rb +2 -1
  76. data/lib/elastic/app-search/api/list_synonym_sets.rb +3 -2
  77. data/lib/elastic/app-search/api/log_clickthrough.rb +8 -10
  78. data/lib/elastic/app-search/api/put_api_key.rb +59 -0
  79. data/lib/elastic/app-search/api/put_crawler_crawl_rule.rb +62 -0
  80. data/lib/elastic/app-search/api/put_crawler_crawl_schedule.rb +53 -0
  81. data/lib/elastic/app-search/api/put_crawler_domain.rb +58 -0
  82. data/lib/elastic/app-search/api/put_crawler_entry_point.rb +59 -0
  83. data/lib/elastic/app-search/api/put_crawler_sitemap.rb +59 -0
  84. data/lib/elastic/app-search/api/put_curation.rb +9 -8
  85. data/lib/elastic/app-search/api/put_documents.rb +3 -3
  86. data/lib/elastic/app-search/api/put_schema.rb +4 -4
  87. data/lib/elastic/app-search/api/put_search_settings.rb +6 -2
  88. data/lib/elastic/app-search/api/put_synonym_set.rb +8 -5
  89. data/lib/elastic/app-search/api/query_suggestion.rb +7 -7
  90. data/lib/elastic/app-search/api/reset_search_settings.rb +3 -2
  91. data/lib/elastic/app-search/api/schema.rb +3 -2
  92. data/lib/elastic/app-search/api/search.rb +14 -3
  93. data/lib/elastic/app-search/api/search_settings.rb +3 -2
  94. data/lib/elastic/app-search/api/synonym_set.rb +4 -3
  95. data/lib/elastic/app-search/api/top_clicks_analytics.rb +8 -8
  96. data/lib/elastic/app-search/api/top_queries_analytics.rb +7 -7
  97. data/lib/elastic/app-search/app_search.rb +0 -10
  98. data/lib/elastic/enterprise-search/api/health.rb +1 -0
  99. data/lib/elastic/enterprise-search/api/put_read_only.rb +3 -2
  100. data/lib/elastic/enterprise-search/api/read_only.rb +1 -0
  101. data/lib/elastic/enterprise-search/api/version.rb +1 -0
  102. data/lib/elastic/enterprise-search/client.rb +12 -1
  103. data/lib/elastic/enterprise-search/request.rb +10 -1
  104. data/lib/elastic/enterprise-search/version.rb +1 -1
  105. data/lib/elastic/workplace-search/api/auto_query_refinement_details.rb +49 -0
  106. data/lib/elastic/workplace-search/api/command_sync_jobs.rb +53 -0
  107. data/lib/elastic/workplace-search/api/create_analytics_event.rb +7 -7
  108. data/lib/elastic/workplace-search/api/create_batch_synonym_sets.rb +50 -0
  109. data/lib/elastic/workplace-search/api/create_content_source.rb +5 -2
  110. data/lib/elastic/workplace-search/api/create_external_identity.rb +3 -3
  111. data/lib/elastic/workplace-search/api/current_user.rb +47 -0
  112. data/lib/elastic/workplace-search/api/delete_documents_by_query.rb +50 -0
  113. data/lib/elastic/workplace-search/api/delete_synonym_set.rb +51 -0
  114. data/lib/elastic/workplace-search/api/document.rb +1 -1
  115. data/lib/elastic/workplace-search/api/list_synonym_sets.rb +51 -0
  116. data/lib/elastic/workplace-search/api/put_content_source.rb +7 -4
  117. data/lib/elastic/workplace-search/api/put_content_source_icons.rb +53 -0
  118. data/lib/elastic/workplace-search/api/put_external_identity.rb +3 -3
  119. data/lib/elastic/workplace-search/api/put_synonym_set.rb +53 -0
  120. data/lib/elastic/workplace-search/api/put_triggers_blocklist.rb +47 -0
  121. data/lib/elastic/workplace-search/api/search.rb +4 -1
  122. data/lib/elastic/workplace-search/api/synonym_set.rb +51 -0
  123. data/lib/elastic/workplace-search/api/triggers_blocklist.rb +45 -0
  124. data/lib/elastic/workplace-search/workplace_search.rb +0 -15
  125. data/rake_tasks/unified_release_tasks.rake +46 -0
  126. data/spec/integration/app-search/api_key_spec.rb +110 -0
  127. data/spec/integration/app-search/api_logs_spec.rb +59 -0
  128. data/spec/integration/app-search/app_search_helper.rb +51 -0
  129. data/spec/integration/app-search/count_analytics_spec.rb +47 -0
  130. data/spec/integration/app-search/crawl_requests_spec.rb +86 -0
  131. data/spec/integration/app-search/crawler_crawl_rule_spec.rb +73 -0
  132. data/spec/integration/app-search/crawler_domain_spec.rb +82 -0
  133. data/spec/integration/app-search/crawler_entry_point_spec.rb +77 -0
  134. data/spec/integration/app-search/crawler_metrics_spec.rb +46 -0
  135. data/spec/integration/app-search/crawler_overview_spec.rb +45 -0
  136. data/spec/integration/app-search/crawler_process_crawl_denied_urls_spec.rb +50 -0
  137. data/spec/integration/app-search/crawler_process_crawl_spec.rb +66 -0
  138. data/spec/integration/app-search/crawler_scheduling_spec.rb +69 -0
  139. data/spec/integration/app-search/crawler_sitemap_spec.rb +72 -0
  140. data/spec/integration/app-search/crawler_urls_spec.rb +60 -0
  141. data/spec/{app-search/api_count_analytics_spec.rb → integration/app-search/crawler_user_agent_spec.rb} +6 -9
  142. data/spec/integration/app-search/curations_spec.rb +118 -0
  143. data/spec/integration/app-search/documents_spec.rb +123 -0
  144. data/spec/integration/app-search/engines_spec.rb +78 -0
  145. data/spec/{app-search/api_log_clickthrough_spec.rb → integration/app-search/log_clickthrough_spec.rb} +14 -7
  146. data/spec/integration/app-search/meta_engines_spec.rb +75 -0
  147. data/spec/integration/app-search/query_suggestion_spec.rb +50 -0
  148. data/spec/{app-search/api_schema_spec.rb → integration/app-search/schema_spec.rb} +21 -16
  149. data/spec/integration/app-search/search_and_multiple_search_spec.rb +67 -0
  150. data/spec/integration/app-search/search_settings_spec.rb +87 -0
  151. data/spec/integration/app-search/synonyms_spec.rb +79 -0
  152. data/spec/{app-search/api_top_clicks_analytics_spec.rb → integration/app-search/top_clicks_analytics_spec.rb} +20 -14
  153. data/spec/{app-search/api_top_queries_analytics_spec.rb → integration/app-search/top_queries_analytics_spec.rb} +16 -8
  154. data/spec/integration/workplace-search/content_sources_spec.rb +106 -0
  155. data/spec/integration/workplace-search/documents_spec.rb +95 -0
  156. data/spec/integration/workplace-search/external_identities_spec.rb +97 -0
  157. data/spec/integration/workplace-search/icon.png +0 -0
  158. data/spec/integration/workplace-search/permissions_spec.rb +77 -0
  159. data/spec/integration/workplace-search/synonym_sets_spec.rb +92 -0
  160. data/spec/integration/workplace-search/triggers_spec.rb +43 -0
  161. data/spec/{app-search/api_query_suggestion_spec.rb → integration/workplace-search/users_spec.rb} +12 -15
  162. data/spec/integration/workplace-search/workplace_search_helper.rb +39 -0
  163. data/spec/webmock_requires.rb +16 -0
  164. metadata +105 -61
  165. data/spec/app-search/api_curations_spec.rb +0 -97
  166. data/spec/app-search/api_documents_spec.rb +0 -102
  167. data/spec/app-search/api_engines_spec.rb +0 -67
  168. data/spec/app-search/api_meta_engines_spec.rb +0 -72
  169. data/spec/app-search/api_search_and_multi_search_spec.rb +0 -48
  170. data/spec/app-search/api_search_settings_spec.rb +0 -76
  171. data/spec/app-search/api_spec_helper.rb +0 -14
  172. data/spec/app-search/api_synonyms_spec.rb +0 -79
  173. data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +0 -109
  174. data/spec/fixtures/vcr/app_search/api_documents.yml +0 -56
  175. data/spec/fixtures/vcr/app_search/api_index_documents.yml +0 -57
  176. data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +0 -54
  177. data/spec/fixtures/vcr/app_search/api_logs.yml +0 -70
  178. data/spec/fixtures/vcr/app_search/api_put_schema.yml +0 -109
  179. data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +0 -56
  180. data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +0 -59
  181. data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +0 -56
  182. data/spec/fixtures/vcr/app_search/api_schema.yml +0 -56
  183. data/spec/fixtures/vcr/app_search/api_search_settings.yml +0 -56
  184. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +0 -55
  185. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +0 -55
  186. data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +0 -55
  187. data/spec/fixtures/vcr/app_search/count_analytics.yml +0 -55
  188. data/spec/fixtures/vcr/app_search/create_and_update_document.yml +0 -107
  189. data/spec/fixtures/vcr/app_search/create_curation.yml +0 -113
  190. data/spec/fixtures/vcr/app_search/create_engine.yml +0 -55
  191. data/spec/fixtures/vcr/app_search/create_meta_engine.yml +0 -56
  192. data/spec/fixtures/vcr/app_search/create_synonym_set.yml +0 -56
  193. data/spec/fixtures/vcr/app_search/delete_curation.yml +0 -56
  194. data/spec/fixtures/vcr/app_search/delete_engine.yml +0 -55
  195. data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +0 -56
  196. data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +0 -56
  197. data/spec/fixtures/vcr/app_search/get_curation.yml +0 -56
  198. data/spec/fixtures/vcr/app_search/get_engine.yml +0 -55
  199. data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +0 -107
  200. data/spec/fixtures/vcr/app_search/list_curations.yml +0 -56
  201. data/spec/fixtures/vcr/app_search/list_documents.yml +0 -57
  202. data/spec/fixtures/vcr/app_search/list_engines.yml +0 -55
  203. data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +0 -56
  204. data/spec/fixtures/vcr/app_search/multi_query_search.yml +0 -63
  205. data/spec/fixtures/vcr/app_search/put_curation.yml +0 -113
  206. data/spec/fixtures/vcr/app_search/put_synonym_set.yml +0 -56
  207. data/spec/fixtures/vcr/app_search/search.yml +0 -57
  208. data/spec/fixtures/vcr/app_search/single_query_search.yml +0 -60
  209. data/spec/fixtures/vcr/app_search/synonym_set.yml +0 -56
  210. data/spec/integration/workplace_search_spec.rb +0 -253
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f34ee86d14a96362e791a8f5542bf4a4da9ff48df0ee92b35996f08c56219ce
4
- data.tar.gz: 11be1147329f5adafc17769b825c7262a9d3d4309a705233ceebe24b36c3dc05
3
+ metadata.gz: af43f95c32828fa2a4c5d44f12f430ebaf6ca3ec3fee1f1d6c48b02348e15bee
4
+ data.tar.gz: eb3df761787c3e537cff53bb50c2a44eedacb4dc99c4c609b303bd1ef3734c3d
5
5
  SHA512:
6
- metadata.gz: c867f7c2c897cade800f5e6c6c415eece5c939f53996246378021cb584a39a5b768b02459525741fa3d59654a44893ce8d0c02084a22daf3d7c352230fcf3895
7
- data.tar.gz: 368a0e0137e5315ca34c5b661cca686eff108a2ee31a7951bc1043e57558bc3d48b403dc3d5c03967da7c7fdf6b24cd03018889f6651760e22a6db6d5da17f0e
6
+ metadata.gz: 50e6b28a6b395d26ea2bde7a00211b381d85d3483cda75b6d254d53b14f076c07f88306e2dea718a409ad8412faedfd2dd59062e4a75712bd5071ea6fba0901a
7
+ data.tar.gz: 8a38e574a9a7877afa2aa7bcc1ca377ebff4d71c122dec2c8b43bf9e441ef89f908a42055b42f111e9bfa1db24423819e4da867f8575f74350f7adf91d2dc810
@@ -19,6 +19,7 @@ if [[ -z $es_node_name ]]; then
19
19
  # only set these once
20
20
  set -euo pipefail
21
21
  export TEST_SUITE=${TEST_SUITE-free}
22
+ export SERVICE=${SERVICE-}
22
23
  export RUNSCRIPTS=${RUNSCRIPTS-}
23
24
  export DETACH=${DETACH-false}
24
25
  export CLEANUP=${CLEANUP-false}
@@ -46,6 +46,10 @@
46
46
  type: yaml
47
47
  filename: .ci/test-matrix.yml
48
48
  name: RUBY_VERSION
49
+ - axis:
50
+ type: yaml
51
+ filename: .ci/test-matrix.yml
52
+ name: SERVICE
49
53
  yaml-strategy:
50
54
  exclude-key: exclude
51
55
  filename: .ci/test-matrix.yml
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  - job:
3
- name: elastic+enterprise-search-ruby+master
4
- display-name: 'elastic / enterprise-search-ruby # master'
5
- description: Testing the enterprise-search-ruby master branch.
3
+ name: elastic+enterprise-search-ruby+main
4
+ display-name: 'elastic / enterprise-search-ruby # main'
5
+ description: Testing the enterprise-search-ruby main branch.
6
6
  junit_results: "*-junit.xml"
7
7
  parameters:
8
8
  - string:
9
9
  name: branch_specifier
10
- default: refs/heads/master
10
+ default: refs/heads/main
11
11
  description: the Git branch specifier to build (<branchName>, <tagName>,
12
12
  <commitId>, etc.)
data/.ci/make.sh ADDED
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # ------------------------------------------------------- #
4
+ #
5
+ # Skeleton for common build entry script for all elastic
6
+ # clients. Needs to be adapted to individual client usage.
7
+ #
8
+ # Must be called: ./.ci/make.sh <target> <params>
9
+ #
10
+ # Version: 1.1.0
11
+ #
12
+ # Targets:
13
+ # ---------------------------
14
+ # assemble <VERSION> : build client artefacts with version
15
+ # bump <VERSION> : bump client internals to version
16
+ # codegen <VERSION> : generate endpoints
17
+ # docsgen <VERSION> : generate documentation
18
+ # examplegen : generate the doc examples
19
+ # clean : clean workspace
20
+ #
21
+ # ------------------------------------------------------- #
22
+
23
+ # ------------------------------------------------------- #
24
+ # Bootstrap
25
+ # ------------------------------------------------------- #
26
+
27
+ script_path=$(dirname "$(realpath -s "$0")")
28
+ repo=$(realpath "$script_path/../")
29
+
30
+ # shellcheck disable=SC1090
31
+ CMD=$1
32
+ TASK=$1
33
+ TASK_ARGS=()
34
+ VERSION=$2
35
+ STACK_VERSION=$VERSION
36
+ set -euo pipefail
37
+
38
+ product="elastic/enterprise-search-ruby"
39
+ output_folder=".ci/output"
40
+ codegen_folder=".ci/output"
41
+ OUTPUT_DIR="$repo/${output_folder}"
42
+ REPO_BINDING="${OUTPUT_DIR}:/sln/${output_folder}"
43
+ mkdir -p "$OUTPUT_DIR"
44
+
45
+ echo -e "\033[34;1mINFO:\033[0m PRODUCT ${product}\033[0m"
46
+ echo -e "\033[34;1mINFO:\033[0m VERSION ${STACK_VERSION}\033[0m"
47
+ echo -e "\033[34;1mINFO:\033[0m OUTPUT_DIR ${OUTPUT_DIR}\033[0m"
48
+
49
+ RUBY_TEST_VERSION=${RUBY_TEST_VERSION-2.7}
50
+
51
+ case $CMD in
52
+ clean)
53
+ echo -e "\033[36;1mTARGET: clean workspace $output_folder\033[0m"
54
+ rm -rf "$output_folder"
55
+ echo -e "\033[32;1mdone.\033[0m"
56
+ exit 0
57
+ ;;
58
+ assemble)
59
+ if [ -v $VERSION ]; then
60
+ echo -e "\033[31;1mTARGET: assemble -> missing version parameter\033[0m"
61
+ exit 1
62
+ fi
63
+ echo -e "\033[36;1mTARGET: assemble artefact $VERSION\033[0m"
64
+ TASK=assemble
65
+ TASK_ARGS=("$VERSION" "$output_folder")
66
+ ;;
67
+ codegen)
68
+ if [ -v $VERSION ]; then
69
+ echo -e "\033[31;1mTARGET: codegen -> missing version parameter\033[0m"
70
+ exit 1
71
+ fi
72
+ echo -e "\033[36;1mTARGET: codegen API v$VERSION\033[0m"
73
+ TASK=codegen
74
+ # VERSION is BRANCH here for now
75
+ TASK_ARGS=("$VERSION" "$codegen_folder")
76
+ ;;
77
+ docsgen)
78
+ if [ -v $VERSION ]; then
79
+ echo -e "\033[31;1mTARGET: docsgen -> missing version parameter\033[0m"
80
+ exit 1
81
+ fi
82
+ echo -e "\033[36;1mTARGET: generate docs for $VERSION\033[0m"
83
+ TASK=codegen
84
+ # VERSION is BRANCH here for now
85
+ TASK_ARGS=("$VERSION" "$codegen_folder")
86
+ ;;
87
+ examplesgen)
88
+ echo -e "\033[36;1mTARGET: generate examples\033[0m"
89
+ TASK=codegen
90
+ # VERSION is BRANCH here for now
91
+ TASK_ARGS=("$VERSION" "$codegen_folder")
92
+ ;;
93
+ bump)
94
+ if [ -v $VERSION ]; then
95
+ echo -e "\033[31;1mTARGET: bump -> missing version parameter\033[0m"
96
+ exit 1
97
+ fi
98
+ echo -e "\033[36;1mTARGET: bump to version $VERSION\033[0m"
99
+ TASK=bump
100
+ # VERSION is BRANCH here for now
101
+ TASK_ARGS=("$VERSION")
102
+ ;;
103
+ *)
104
+ echo -e "\nUsage:\n\t $CMD is not supported right now\n"
105
+ exit 1
106
+ esac
107
+
108
+
109
+ # ------------------------------------------------------- #
110
+ # Build Container
111
+ # ------------------------------------------------------- #
112
+
113
+ echo -e "\033[34;1mINFO: building $product container\033[0m"
114
+
115
+ docker build --file .ci/Dockerfile --tag ${product} \
116
+ --build-arg USER_ID="$(id -u)" \
117
+ --build-arg GROUP_ID="$(id -g)" .
118
+
119
+
120
+ # ------------------------------------------------------- #
121
+ # Run the Container
122
+ # ------------------------------------------------------- #
123
+
124
+ echo -e "\033[34;1mINFO: running $product container\033[0m"
125
+
126
+ # Convert ARGS to comma separated string for Rake:
127
+ args_string="${TASK_ARGS[*]}"
128
+ args_string="${args_string// /,}"
129
+
130
+ docker run \
131
+ --env "RUBY_TEST_VERSION=${RUBY_TEST_VERSION}" \
132
+ --name test-runner \
133
+ --volume $REPO_BINDING \
134
+ --volume $repo:/usr/src/app \
135
+ --rm \
136
+ $product \
137
+ bundle exec rake unified_release:"$TASK"["$args_string"]
138
+
139
+ # ------------------------------------------------------- #
140
+ # Post Command tasks & checks
141
+ # ------------------------------------------------------- #
142
+
143
+ if [[ "$CMD" == "assemble" ]]; then
144
+ if compgen -G ".ci/output/*" > /dev/null; then
145
+ echo -e "\033[32;1mTARGET: successfully assembled client v$VERSION\033[0m"
146
+ else
147
+ echo -e "\033[31;1mTARGET: assemble failed, empty workspace!\033[0m"
148
+ exit 1
149
+ fi
150
+ fi
151
+
152
+ if [[ "$CMD" == "codegen" ]]; then
153
+ echo "TODO"
154
+ fi
155
+
156
+ if [[ "$CMD" == "docsgen" ]]; then
157
+ echo "TODO"
158
+ fi
159
+
160
+ if [[ "$CMD" == "examplesgen" ]]; then
161
+ echo "TODO"
162
+ fi
@@ -17,6 +17,7 @@ echo -e "\033[34;1mINFO:\033[0m TEST_SUITE: ${TEST_SUITE}\033[0m"
17
17
  echo -e "\033[34;1mINFO:\033[0m RUBY_VERSION: ${RUBY_VERSION}\033[0m"
18
18
  echo -e "\033[34;1mINFO:\033[0m RUNSCRIPTS: ${RUNSCRIPTS}\033[0m"
19
19
  echo -e "\033[34;1mINFO:\033[0m URL: ${elasticsearch_url}\033[0m"
20
+ echo -e "\033[34;1mINFO:\033[0m SERVICE: ${SERVICE}\033[0m"
20
21
 
21
22
  echo -e "\033[34;1mINFO:\033[0m pinging Elasticsearch ..\033[0m"
22
23
  curl --insecure --fail $external_elasticsearch_url/_cluster/health?pretty
@@ -46,4 +47,4 @@ docker run \
46
47
  --rm \
47
48
  --volume `pwd`:/code/enterprise-search-ruby \
48
49
  elastic/enterprise-search-ruby \
49
- rake spec:integration
50
+ rake spec:integration:${SERVICE}
data/.ci/test-matrix.yml CHANGED
@@ -6,9 +6,11 @@ RUBY_VERSION:
6
6
  - 2.5
7
7
 
8
8
  STACK_VERSION:
9
- - 7.13-SNAPSHOT
9
+ - 7.15-SNAPSHOT
10
10
 
11
- TEST_SUITE:
12
- - platinum
11
+ SERVICE:
12
+ - appsearch
13
+ - enterprisesearch
14
+ - workplacesearch
13
15
 
14
16
  exclude: ~
@@ -0,0 +1,33 @@
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
+ LICENSE = File.read('./.github/license-header.txt')
19
+ files = `git ls-files | grep -E '\.rb|Rakefile|\.rake|\.erb|Gemfile|gemspec'`.split("\n")
20
+ errors = []
21
+
22
+ files.each do |file|
23
+ unless File.read(file).include?(LICENSE)
24
+ errors << file
25
+ puts "#{file} doesn't contain the correct license header"
26
+ end
27
+ end
28
+
29
+ if errors.empty?
30
+ puts 'All checked files have the correct license header'
31
+ else
32
+ exit 1
33
+ end
@@ -17,20 +17,7 @@
17
17
 
18
18
  # frozen_string_literal: true
19
19
 
20
- require_relative './api_spec_helper'
20
+ source 'https://rubygems.org'
21
21
 
22
- describe Elastic::EnterpriseSearch::AppSearch::Client do
23
- context 'api_logs' do
24
- it 'returns api logs' do
25
- VCR.use_cassette('app_search/api_logs') do
26
- response = @client.api_logs(
27
- 'videogames',
28
- from_date: Date.new(2020, 10, 0o1),
29
- to_date: Date.new(2020, 11, 0o5)
30
- )
31
- expect(response.status).to eq 200
32
- expect(response.body['results'].count).to be > 1
33
- end
34
- end
35
- end
36
- end
22
+ gem 'elasticsearch', ENV['es-version']
23
+ gem 'elastic-enterprise-search', path: File.expand_path('../../', __dir__)
@@ -0,0 +1,16 @@
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.
@@ -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
@@ -0,0 +1,13 @@
1
+ name: License headers
2
+ on: [pull_request]
3
+ jobs:
4
+ build:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - uses: actions/checkout@v2
8
+ - uses: ruby/setup-ruby@v1
9
+ with:
10
+ ruby-version: 3
11
+ - name: Check license headers
12
+ run: |
13
+ ruby ./.github/check_license_headers.rb
@@ -1,4 +1,4 @@
1
- name: master
1
+ name: 7.15
2
2
  on: [push, pull_request]
3
3
 
4
4
  jobs:
data/CONTRIBUTING.md CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  3. Rebase your changes. Update your local repository with the most recent code
24
24
  from the main `enterprise-search-ruby` repository and rebase your branch
25
- on top of the latest `master` branch. All of your changes will be squashed
25
+ on top of the latest `main` branch. All of your changes will be squashed
26
26
  into a single commit so don't worry about pushing multiple times.
27
27
 
28
28
  4. Submit a pull request. Push your local changes to your forked repository
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Elastic Enterprise Search Client
2
2
 
3
- ![build](https://github.com/elastic/enterprise-search-ruby/workflows/master/badge.svg)
3
+ ![build](https://github.com/elastic/enterprise-search-ruby/workflows/main/badge.svg)
4
4
  ![rubocop](https://github.com/elastic/enterprise-search-ruby/workflows/rubocop/badge.svg)
5
5
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop-hq/rubocop)
6
6
 
data/Rakefile CHANGED
@@ -19,6 +19,7 @@
19
19
 
20
20
  require 'rspec/core/rake_task'
21
21
  require 'bundler/gem_tasks'
22
+ import 'rake_tasks/unified_release_tasks.rake'
22
23
 
23
24
  desc 'Open an irb session preloaded with this library'
24
25
  task :console do
@@ -30,6 +31,7 @@ task :stack, [:version] do |_, params|
30
31
  sh "STACK_VERSION=#{params[:version]} ./.ci/run-local.sh"
31
32
  end
32
33
 
34
+ # rubocop:disable Metrics/BlockLength
33
35
  namespace :spec do
34
36
  desc 'Run client tests'
35
37
  task :client do
@@ -45,4 +47,22 @@ namespace :spec do
45
47
  task :all do
46
48
  sh 'rspec spec'
47
49
  end
50
+
51
+ namespace :integration do
52
+ desc 'Run App Search integration tests'
53
+ task :appsearch do
54
+ sh 'rspec spec/integration/app-search'
55
+ end
56
+
57
+ desc 'Run Enterprise Search integration tests'
58
+ task :enterprisesearch do
59
+ sh 'rspec spec/integration/enterprise_search_api_spec.rb'
60
+ end
61
+
62
+ desc 'Run Workplace Search integration tests'
63
+ task :workplacesearch do
64
+ sh 'rspec spec/integration/workplace-search'
65
+ end
66
+ end
48
67
  end
68
+ # rubocop:enable Metrics/BlockLength
@@ -1,6 +1,8 @@
1
1
  [[app-search-api]]
2
2
  == App Search API
3
3
 
4
+ This document includes examples for different API requests. Please refer to the https://www.elastic.co/guide/en/app-search/current/index.html[Elastic App Search Documentation] for more information, particularly the https://www.elastic.co/guide/en/app-search/current/api-reference.html[API Reference].
5
+
4
6
  === Engines
5
7
 
6
8
  [source,rb]
@@ -146,6 +148,160 @@ client.list_curations(engine_name)
146
148
  client.delete_curation(engine_name, curation_id: 'cur-id')
147
149
  ----------------------------
148
150
 
151
+ === Api Key
152
+
153
+ [source,rb]
154
+ ----------------------------
155
+ # Create API Key
156
+ body = {
157
+ name: name,
158
+ type: 'private',
159
+ read: true,
160
+ write: true,
161
+ access_all_engines: true
162
+ }
163
+ response = client.create_api_key(body: body)
164
+
165
+ # Get the details of an API Key
166
+ client.api_key(api_key_name: name)
167
+
168
+ # List API Keys
169
+ client.list_api_keys
170
+
171
+ # Update an API Key
172
+ body = { name: name, type: 'private', read: true, write: true, engines: ['test'] }
173
+ client.put_api_key(api_key_name: name, body: body)
174
+
175
+ # Delete an API Key
176
+ client.delete_api_key(api_key_name: name)
177
+ ----------------------------
178
+
179
+ === Web Crawler
180
+
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
+ See https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html[Web Crawler API reference] for more information.
189
+
190
+ [source,rb]
191
+ ----------------------------
192
+ # Create a crawler domain
193
+ body = { name: 'https://www.elastic.co' }
194
+ client.create_crawler_domain(engine_name, body: body)
195
+
196
+ # Get crawler domain information
197
+ client.crawler_domain(engine_name, domain_id: domain_id)
198
+
199
+ # Update a crawler domain
200
+ body = { name: 'https://www.wikipedia.org' }
201
+ client.put_crawler_domain(engine_name, domain_id: domain_id, domain: body)
202
+
203
+ # Delete a crawler domain
204
+ client.delete_crawler_domain(engine_name, domain_id: domain_id)
205
+
206
+ # Create a crawler crawl request
207
+ client.create_crawler_crawl_request(engine_name)
208
+
209
+ # Retrieve a crawl request
210
+ client.crawler_crawl_request(engine_name, crawl_request_id: request_id)
211
+
212
+ # Retrieve active crawl request details
213
+ client.crawler_active_crawl_request(engine_name)
214
+
215
+ # List crawl requests
216
+ client.list_crawler_crawl_requests(engine_name)
217
+
218
+ # Delete an active crawl request
219
+ client.delete_active_crawl_request(engine_name)
220
+
221
+ # Set a crawler crawl schedule
222
+ body = { frequency: 1, unit: 'day' }
223
+ client.put_crawler_crawl_schedule(engine_name, body: body)
224
+
225
+ # Retrieve crawler crawl schedule
226
+ client.crawler_crawl_schedule(engine_name)
227
+
228
+ # Delete a crawler crawl schedule
229
+ client.delete_crawler_crawl_schedule(engine_name)
230
+
231
+ # Create a crawler entry point
232
+ client.create_crawler_entry_point(engine_name, domain_id: domain_id, body: { value: '/elastic-stack' })
233
+
234
+ # Update a crawler entry point
235
+ client.put_crawler_entry_point(
236
+ engine_name,
237
+ domain_id: domain_id,
238
+ entry_point_id: entry_point_id,
239
+ body: { value: '/enterprise-search' }
240
+ )
241
+
242
+ # Validate a URL
243
+ client.crawler_url_validation_result(engine_name, url: name)
244
+
245
+ # Extract ccontent from a URL
246
+ client.crawler_url_extraction_result(engine_name, url: name)
247
+
248
+ # Retrieve tracing history for a crawler URL
249
+ client.crawler_url_tracing_result(engine_name, url: name)
250
+
251
+ # Delete a crawler entry point
252
+ client.delete_crawler_entry_point(
253
+ engine_name,
254
+ domain_id: domain_id,
255
+ entry_point_id: entry_point_id
256
+ )
257
+
258
+ # Retrieve crawler metrics
259
+ client.crawler_metrics
260
+
261
+ # Retrieve crawler configuration overview
262
+ client.crawler_overview(engine_name)
263
+
264
+ # Create a crawler sitemap
265
+ body = { url: 'https://www.elastic.co/sitemap.xml' }
266
+ client.create_crawler_sitemap(engine_name, domain_id: domain_id, body: body)
267
+
268
+ # Update a crawler sitemap
269
+ body = { url: 'https://www.elastic.co/sitemap2.xml' }
270
+ client.put_crawler_sitemap(engine_name, domain_id: domain_id, sitemap_id: sitemap_id, body: body)
271
+
272
+ # Delete a crawler sitemap
273
+ client.delete_crawler_sitemap(engine_name, domain_id: domain_id, sitemap_id: sitemap_id)
274
+
275
+ # Create a crawler crawl rule
276
+ body = { order: 1, policy: 'allow', rule: 'contains', pattern: '/stack' }
277
+ client.create_crawler_crawl_rule(engine_name, domain_id: domain_id, body: body)
278
+
279
+ # Update a crawler crawl rule
280
+ body = { order: 2, policy: 'allow', rule: 'begins', pattern: '/stack' }
281
+ client.put_crawler_crawl_rule(engine_name, domain_id: domain_id, crawl_rule_id: rule_id, body: body)
282
+
283
+ # Delete a crawler crawl rule
284
+ client.delete_crawler_crawl_rule(engine_name, domain_id: domain_id, crawl_rule_id: rule_id)
285
+
286
+ # Create a process crawl
287
+ client.create_crawler_process_crawl(engine_name, body: { dry_run: true })
288
+
289
+ # Retrieve a process crawl
290
+ client.crawler_process_crawl(engine_name, process_crawl_id: id)
291
+
292
+ # Retrieve denied URLs cor a process crawl
293
+ client.denied_urls(engine_name, process_crawl_id: id)
294
+
295
+ # List process crawls
296
+ client.list_crawler_process_crawls(engine_name)
297
+
298
+ # View denied urls for Process Crawl
299
+ client.crawler_process_crawl_denied_urls(engine_name, process_crawl_id: id)
300
+
301
+ # Cancel an active crawl request, stopping a running crawl if needed.
302
+ client.delete_crawler_active_crawl_request(engine_name)
303
+ ----------------------------
304
+
149
305
  === Other API Endpoints
150
306
 
151
307
  [source,rb]
@@ -179,7 +335,7 @@ client.put_search_settings(engine_name, body: body)
179
335
  client.reset_search_settings(engine_name)
180
336
 
181
337
  # Click - Send data about clicked results
182
- client.log_clickthrough(engine_name, query_text: 'query', document_id: 'doc-id')
338
+ client.log_clickthrough(engine_name, body: { query: 'query', document_id: 'doc-id' })
183
339
 
184
340
  # Query Suggestion - Provide relevant query suggestions for incomplete queries
185
341
  client.query_suggestion(engine_name, query: 'incomplete_query')
@@ -6,7 +6,7 @@ This is the official Ruby client for Elastic Enterprise Search.
6
6
  [discrete]
7
7
  === Compatibility
8
8
 
9
- Current development happens in the master branch.
9
+ Current development happens in the main branch.
10
10
 
11
11
  The library is compatible with all Elastic Enterprise Search versions since `7.x` but you **have to use a matching major version**:
12
12
 
@@ -14,11 +14,11 @@ 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/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].
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
18
 
19
19
  All requests, if successful, will return an `Elasticsearch::Transport::Transport::Response` instance. You can access the response `body`, `headers` and `status`.
20
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].
21
+ `elasticsearch-transport` defines a https://github.com/elasticsearch/elasticsearch-ruby/blob/main/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/main/elasticsearch-transport#exception-handling[here]. You can find the full documentation for `elasticsearch-transport` at https://rubydoc.info/gems/elasticsearch-transport[RubyDoc].
22
22
 
23
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
24
 
@@ -1,6 +1,18 @@
1
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]]
2
13
  === 7.12.0 Release notes
3
14
 
15
+
4
16
  [discrete]
5
17
  ==== General
6
18
 
@@ -0,0 +1,33 @@
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
+ === 7.14.0 Release notes
15
+
16
+ [discrete]
17
+ ==== General
18
+
19
+ - Tested with Elastic Enterprise Search API version 7.14.0.
20
+
21
+ [discrete]
22
+ ==== App Search
23
+
24
+ - Adds API Key endpoints: `api_key`, `create_api_key`, `delete_api_key`, `list_api_keys`, `put_api_key`
25
+
26
+ [discrete]
27
+ ==== Workplace Search
28
+
29
+ - Adds synonym set endpoints: `create_batch_synonym_sets`, `delete_synonym_set`, `list_synonym_sets`, `put_synonym_set`, `synonym_set`
30
+ - Adds `current_user` endpoint
31
+ - Adds `command_sync_jobs` endpoint
32
+ - Adds `delete_documents_by_query` endpoint
33
+ - Adds `put_content_source_icons` endpoint