diff --git a/cis/com.b2international.snowowl.snomed.cis/META-INF/MANIFEST.MF b/cis/com.b2international.snowowl.snomed.cis/META-INF/MANIFEST.MF
index 4fa95440db9..a012748f36b 100644
--- a/cis/com.b2international.snowowl.snomed.cis/META-INF/MANIFEST.MF
+++ b/cis/com.b2international.snowowl.snomed.cis/META-INF/MANIFEST.MF
@@ -8,9 +8,9 @@ Automatic-Module-Name: com.b2international.snowowl.snomed.cis
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.9.0",
- org.apache.httpcomponents.httpasyncclient;bundle-version="[4.1.4,4.1.5)",
- org.apache.httpcomponents.httpclient;bundle-version="[4.5.3,4.5.4)",
- org.apache.httpcomponents.httpcore;bundle-version="[4.4.10,4.4.11)",
+ org.apache.httpcomponents.httpasyncclient;bundle-version="[4.1.4,4.2.0)",
+ org.apache.httpcomponents.httpclient;bundle-version="[4.5.10,4.6.0)",
+ org.apache.httpcomponents.httpcore;bundle-version="[4.4.12,4.5.0)",
com.b2international.snowowl.core
Import-Package: org.slf4j;version="1.7.25"
Export-Package: com.b2international.snowowl.snomed.cis,
diff --git a/commons/com.b2international.index.es8/.classpath b/commons/com.b2international.index.es8/.classpath
new file mode 100644
index 00000000000..c53d91ef031
--- /dev/null
+++ b/commons/com.b2international.index.es8/.classpath
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/commons/com.b2international.index.es8/.project b/commons/com.b2international.index.es8/.project
new file mode 100644
index 00000000000..1d9fda409f6
--- /dev/null
+++ b/commons/com.b2international.index.es8/.project
@@ -0,0 +1,34 @@
+
+
+ com.b2international.index.es8
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+
+
+ org.eclipse.m2e.core.maven2Nature
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/commons/com.b2international.index.es8/META-INF/MANIFEST.MF b/commons/com.b2international.index.es8/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..b2fa9b55728
--- /dev/null
+++ b/commons/com.b2international.index.es8/META-INF/MANIFEST.MF
@@ -0,0 +1,207 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Elasticsearch 8 Index Client Module
+Bundle-SymbolicName: com.b2international.index.es8;singleton:=true
+Bundle-Version: 8.4.1.qualifier
+Bundle-Vendor: B2i Healthcare
+Automatic-Module-Name: com.b2international.index.es8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.9.0",
+ org.apache.commons.codec;bundle-version="1.11.0",
+ com.b2international.commons;visibility:=reexport,
+ org.apache.httpcomponents.httpasyncclient;bundle-version="[4.1.4,4.2.0)",
+ org.apache.httpcomponents.httpclient;bundle-version="[4.5.10,4.6.0)",
+ org.apache.httpcomponents.httpcore;bundle-version="[4.4.12,4.5.0)"
+Bundle-ClassPath: .,
+ lib/elasticsearch-java-8.3.2.jar,
+ lib/elasticsearch-rest-client-8.3.2.jar,
+ lib/jakarta.json-api-2.0.1.jar,
+ lib/jsr305-3.0.2.jar,
+ lib/parsson-1.0.0.jar
+Export-Package: co.elastic.clients,
+ co.elastic.clients.elasticsearch,
+ co.elastic.clients.elasticsearch._types,
+ co.elastic.clients.elasticsearch._types.aggregations,
+ co.elastic.clients.elasticsearch._types.analysis,
+ co.elastic.clients.elasticsearch._types.mapping,
+ co.elastic.clients.elasticsearch._types.query_dsl,
+ co.elastic.clients.elasticsearch.async_search,
+ co.elastic.clients.elasticsearch.async_search.status,
+ co.elastic.clients.elasticsearch.autoscaling,
+ co.elastic.clients.elasticsearch.autoscaling.get_autoscaling_capacity,
+ co.elastic.clients.elasticsearch.cat,
+ co.elastic.clients.elasticsearch.cat.aliases,
+ co.elastic.clients.elasticsearch.cat.allocation,
+ co.elastic.clients.elasticsearch.cat.component_templates,
+ co.elastic.clients.elasticsearch.cat.count,
+ co.elastic.clients.elasticsearch.cat.fielddata,
+ co.elastic.clients.elasticsearch.cat.health,
+ co.elastic.clients.elasticsearch.cat.help,
+ co.elastic.clients.elasticsearch.cat.indices,
+ co.elastic.clients.elasticsearch.cat.master,
+ co.elastic.clients.elasticsearch.cat.ml_data_frame_analytics,
+ co.elastic.clients.elasticsearch.cat.ml_datafeeds,
+ co.elastic.clients.elasticsearch.cat.ml_jobs,
+ co.elastic.clients.elasticsearch.cat.ml_trained_models,
+ co.elastic.clients.elasticsearch.cat.nodeattrs,
+ co.elastic.clients.elasticsearch.cat.nodes,
+ co.elastic.clients.elasticsearch.cat.pending_tasks,
+ co.elastic.clients.elasticsearch.cat.plugins,
+ co.elastic.clients.elasticsearch.cat.recovery,
+ co.elastic.clients.elasticsearch.cat.repositories,
+ co.elastic.clients.elasticsearch.cat.segments,
+ co.elastic.clients.elasticsearch.cat.shards,
+ co.elastic.clients.elasticsearch.cat.snapshots,
+ co.elastic.clients.elasticsearch.cat.tasks,
+ co.elastic.clients.elasticsearch.cat.templates,
+ co.elastic.clients.elasticsearch.cat.thread_pool,
+ co.elastic.clients.elasticsearch.cat.transforms,
+ co.elastic.clients.elasticsearch.ccr,
+ co.elastic.clients.elasticsearch.ccr.follow_info,
+ co.elastic.clients.elasticsearch.ccr.get_auto_follow_pattern,
+ co.elastic.clients.elasticsearch.ccr.stats,
+ co.elastic.clients.elasticsearch.cluster,
+ co.elastic.clients.elasticsearch.cluster.allocation_explain,
+ co.elastic.clients.elasticsearch.cluster.health,
+ co.elastic.clients.elasticsearch.cluster.pending_tasks,
+ co.elastic.clients.elasticsearch.cluster.remote_info,
+ co.elastic.clients.elasticsearch.cluster.reroute,
+ co.elastic.clients.elasticsearch.cluster.stats,
+ co.elastic.clients.elasticsearch.core,
+ co.elastic.clients.elasticsearch.core.bulk,
+ co.elastic.clients.elasticsearch.core.explain,
+ co.elastic.clients.elasticsearch.core.field_caps,
+ co.elastic.clients.elasticsearch.core.get,
+ co.elastic.clients.elasticsearch.core.get_script_context,
+ co.elastic.clients.elasticsearch.core.get_script_languages,
+ co.elastic.clients.elasticsearch.core.knn_search,
+ co.elastic.clients.elasticsearch.core.mget,
+ co.elastic.clients.elasticsearch.core.msearch,
+ co.elastic.clients.elasticsearch.core.msearch_template,
+ co.elastic.clients.elasticsearch.core.mtermvectors,
+ co.elastic.clients.elasticsearch.core.rank_eval,
+ co.elastic.clients.elasticsearch.core.reindex,
+ co.elastic.clients.elasticsearch.core.reindex_rethrottle,
+ co.elastic.clients.elasticsearch.core.scripts_painless_execute,
+ co.elastic.clients.elasticsearch.core.search,
+ co.elastic.clients.elasticsearch.core.search_shards,
+ co.elastic.clients.elasticsearch.core.termvectors,
+ co.elastic.clients.elasticsearch.core.update,
+ co.elastic.clients.elasticsearch.core.update_by_query_rethrottle,
+ co.elastic.clients.elasticsearch.dangling_indices,
+ co.elastic.clients.elasticsearch.dangling_indices.list_dangling_indices,
+ co.elastic.clients.elasticsearch.enrich,
+ co.elastic.clients.elasticsearch.enrich.execute_policy,
+ co.elastic.clients.elasticsearch.enrich.stats,
+ co.elastic.clients.elasticsearch.eql,
+ co.elastic.clients.elasticsearch.eql.search,
+ co.elastic.clients.elasticsearch.features,
+ co.elastic.clients.elasticsearch.fleet,
+ co.elastic.clients.elasticsearch.graph,
+ co.elastic.clients.elasticsearch.ilm,
+ co.elastic.clients.elasticsearch.ilm.explain_lifecycle,
+ co.elastic.clients.elasticsearch.ilm.get_lifecycle,
+ co.elastic.clients.elasticsearch.ilm.move_to_step,
+ co.elastic.clients.elasticsearch.indices,
+ co.elastic.clients.elasticsearch.indices.add_block,
+ co.elastic.clients.elasticsearch.indices.analyze,
+ co.elastic.clients.elasticsearch.indices.close,
+ co.elastic.clients.elasticsearch.indices.data_streams_stats,
+ co.elastic.clients.elasticsearch.indices.field_usage_stats,
+ co.elastic.clients.elasticsearch.indices.get,
+ co.elastic.clients.elasticsearch.indices.get_alias,
+ co.elastic.clients.elasticsearch.indices.get_field_mapping,
+ co.elastic.clients.elasticsearch.indices.get_index_template,
+ co.elastic.clients.elasticsearch.indices.get_mapping,
+ co.elastic.clients.elasticsearch.indices.modify_data_stream,
+ co.elastic.clients.elasticsearch.indices.put_index_template,
+ co.elastic.clients.elasticsearch.indices.recovery,
+ co.elastic.clients.elasticsearch.indices.reload_search_analyzers,
+ co.elastic.clients.elasticsearch.indices.resolve_index,
+ co.elastic.clients.elasticsearch.indices.rollover,
+ co.elastic.clients.elasticsearch.indices.segments,
+ co.elastic.clients.elasticsearch.indices.shard_stores,
+ co.elastic.clients.elasticsearch.indices.simulate_template,
+ co.elastic.clients.elasticsearch.indices.stats,
+ co.elastic.clients.elasticsearch.indices.update_aliases,
+ co.elastic.clients.elasticsearch.indices.validate_query,
+ co.elastic.clients.elasticsearch.ingest,
+ co.elastic.clients.elasticsearch.ingest.geo_ip_stats,
+ co.elastic.clients.elasticsearch.ingest.simulate,
+ co.elastic.clients.elasticsearch.license,
+ co.elastic.clients.elasticsearch.license.get,
+ co.elastic.clients.elasticsearch.license.post,
+ co.elastic.clients.elasticsearch.logstash,
+ co.elastic.clients.elasticsearch.migration,
+ co.elastic.clients.elasticsearch.migration.deprecations,
+ co.elastic.clients.elasticsearch.migration.get_feature_upgrade_status,
+ co.elastic.clients.elasticsearch.migration.post_feature_upgrade,
+ co.elastic.clients.elasticsearch.ml,
+ co.elastic.clients.elasticsearch.ml.evaluate_data_frame,
+ co.elastic.clients.elasticsearch.ml.get_calendars,
+ co.elastic.clients.elasticsearch.ml.get_memory_stats,
+ co.elastic.clients.elasticsearch.ml.info,
+ co.elastic.clients.elasticsearch.ml.preview_data_frame_analytics,
+ co.elastic.clients.elasticsearch.ml.put_trained_model,
+ co.elastic.clients.elasticsearch.monitoring,
+ co.elastic.clients.elasticsearch.nodes,
+ co.elastic.clients.elasticsearch.nodes.clear_repositories_metering_archive,
+ co.elastic.clients.elasticsearch.nodes.get_repositories_metering_info,
+ co.elastic.clients.elasticsearch.nodes.hot_threads,
+ co.elastic.clients.elasticsearch.nodes.info,
+ co.elastic.clients.elasticsearch.nodes.reload_secure_settings,
+ co.elastic.clients.elasticsearch.nodes.stats,
+ co.elastic.clients.elasticsearch.nodes.usage,
+ co.elastic.clients.elasticsearch.rollup,
+ co.elastic.clients.elasticsearch.rollup.get_jobs,
+ co.elastic.clients.elasticsearch.rollup.get_rollup_caps,
+ co.elastic.clients.elasticsearch.rollup.get_rollup_index_caps,
+ co.elastic.clients.elasticsearch.searchable_snapshots,
+ co.elastic.clients.elasticsearch.searchable_snapshots.cache_stats,
+ co.elastic.clients.elasticsearch.searchable_snapshots.mount,
+ co.elastic.clients.elasticsearch.security,
+ co.elastic.clients.elasticsearch.security.authenticate,
+ co.elastic.clients.elasticsearch.security.create_api_key,
+ co.elastic.clients.elasticsearch.security.create_service_token,
+ co.elastic.clients.elasticsearch.security.delete_privileges,
+ co.elastic.clients.elasticsearch.security.enroll_kibana,
+ co.elastic.clients.elasticsearch.security.get_role,
+ co.elastic.clients.elasticsearch.security.get_service_accounts,
+ co.elastic.clients.elasticsearch.security.get_service_credentials,
+ co.elastic.clients.elasticsearch.security.get_token,
+ co.elastic.clients.elasticsearch.security.grant_api_key,
+ co.elastic.clients.elasticsearch.security.has_privileges,
+ co.elastic.clients.elasticsearch.security.put_privileges,
+ co.elastic.clients.elasticsearch.security.suggest_user_profiles,
+ co.elastic.clients.elasticsearch.shutdown,
+ co.elastic.clients.elasticsearch.shutdown.get_node,
+ co.elastic.clients.elasticsearch.slm,
+ co.elastic.clients.elasticsearch.snapshot,
+ co.elastic.clients.elasticsearch.snapshot.cleanup_repository,
+ co.elastic.clients.elasticsearch.snapshot.get,
+ co.elastic.clients.elasticsearch.snapshot.restore,
+ co.elastic.clients.elasticsearch.snapshot.verify_repository,
+ co.elastic.clients.elasticsearch.sql,
+ co.elastic.clients.elasticsearch.ssl,
+ co.elastic.clients.elasticsearch.ssl.certificates,
+ co.elastic.clients.elasticsearch.tasks,
+ co.elastic.clients.elasticsearch.transform,
+ co.elastic.clients.elasticsearch.transform.get_transform,
+ co.elastic.clients.elasticsearch.transform.get_transform_stats,
+ co.elastic.clients.elasticsearch.watcher,
+ co.elastic.clients.elasticsearch.watcher.execute_watch,
+ co.elastic.clients.elasticsearch.watcher.stats,
+ co.elastic.clients.elasticsearch.xpack,
+ co.elastic.clients.elasticsearch.xpack.info,
+ co.elastic.clients.elasticsearch.xpack.usage,
+ co.elastic.clients.json,
+ co.elastic.clients.json.jackson,
+ co.elastic.clients.json.jsonb,
+ co.elastic.clients.transport,
+ co.elastic.clients.transport.endpoints,
+ co.elastic.clients.transport.rest_client,
+ co.elastic.clients.util,
+ com.b2international.index.es8
+Import-Package: org.apache.commons.logging;version="1.2.0",
+ org.slf4j;version="1.7.2"
diff --git a/commons/com.b2international.index.es8/build.properties b/commons/com.b2international.index.es8/build.properties
new file mode 100644
index 00000000000..6594de1acda
--- /dev/null
+++ b/commons/com.b2international.index.es8/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = target/classes
+bin.includes = META-INF/,\
+ .,\
+ lib/
diff --git a/commons/com.b2international.index.test.tools/lib/.gitignore b/commons/com.b2international.index.es8/lib/.gitignore
similarity index 81%
rename from commons/com.b2international.index.test.tools/lib/.gitignore
rename to commons/com.b2international.index.es8/lib/.gitignore
index 1a5126b1855..95efc4fe3c7 100644
--- a/commons/com.b2international.index.test.tools/lib/.gitignore
+++ b/commons/com.b2international.index.es8/lib/.gitignore
@@ -2,4 +2,5 @@
# Ignore everything in this directory
*
# Except this file
-!.gitignore
\ No newline at end of file
+!.gitignore
+!elasticsearch-log4j-*.jar
\ No newline at end of file
diff --git a/commons/com.b2international.index.es8/pom.xml b/commons/com.b2international.index.es8/pom.xml
new file mode 100644
index 00000000000..29c5cbce35b
--- /dev/null
+++ b/commons/com.b2international.index.es8/pom.xml
@@ -0,0 +1,94 @@
+
+ 4.0.0
+
+ com.b2international.index.es8
+ eclipse-plugin
+
+
+ com.b2international.snowowl
+ commons-parent
+ 8.4.1-SNAPSHOT
+
+
+
+ 8.3.2
+
+
+
+
+ co.elastic.clients
+ elasticsearch-java
+ ${elasticsearch8.version}
+ provided
+
+
+ jakarta.json
+ jakarta.json-api
+ 2.0.1
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 3.1.1
+
+
+ copy-runtime-dependencies
+ generate-sources
+
+ copy-dependencies
+
+
+
+
+ elasticsearch-java,
+ elasticsearch-rest-client,
+ jakarta.json-api,
+ jsr305,
+ parsson
+
+ lib
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.m2e
+ lifecycle-mapping
+ 1.0.0
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ [3.0.2,)
+
+ copy-dependencies
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/commons/com.b2international.index.es8/src/com/b2international/index/es8/Es8Client.java b/commons/com.b2international.index.es8/src/com/b2international/index/es8/Es8Client.java
new file mode 100644
index 00000000000..e9c6770a5bc
--- /dev/null
+++ b/commons/com.b2international.index.es8/src/com/b2international/index/es8/Es8Client.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2022 B2i Healthcare Pte Ltd, http://b2i.sg
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.b2international.index.es8;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+import javax.net.ssl.SSLContext;
+
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.elasticsearch.client.HttpAsyncResponseConsumerFactory;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback;
+import org.elasticsearch.client.RestClientBuilder.RequestConfigCallback;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Strings;
+
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.TransportOptions;
+import co.elastic.clients.transport.rest_client.RestClientOptions;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
+
+/**
+ * Special Elasticsearch 8 compatible Java Client that creates its own Java HTTP client and a {@link ElasticsearchClient} and makes it available to
+ * the index services.
+ *
+ * @since 8.5
+ */
+public class Es8Client implements Closeable {
+
+ /*
+ * Customize the HTTP response consumer factory to allow processing greater than the default 100 MB of data (currently 1 GB) as the input.
+ */
+ private static final int BUFFER_LIMIT = 1024 * 1024 * 1024;
+
+ private final HttpHost host;
+
+ private final ElasticsearchTransport transport;
+ private final ElasticsearchClient client;
+
+ public Es8Client(String clusterName, String clusterUrl, String username, String password, int connectTimeout, int socketTimeout, SSLContext sslContext, ObjectMapper mapper) {
+ this.host = HttpHost.create(clusterUrl);
+
+ final RequestConfigCallback requestConfigCallback = requestConfigBuilder -> requestConfigBuilder
+ .setConnectTimeout(connectTimeout)
+ .setSocketTimeout(socketTimeout);
+
+ final RestClientBuilder restClientBuilder = RestClient.builder(host)
+ .setRequestConfigCallback(requestConfigCallback);
+
+ final boolean isProtected = !Strings.isNullOrEmpty(username) && !Strings.isNullOrEmpty(password);
+ if (isProtected) {
+
+ final HttpClientConfigCallback httpClientConfigCallback = httpClientConfigBuilder -> {
+ final BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
+ credentialsProvider.setCredentials(AuthScope.ANY,
+ new UsernamePasswordCredentials(username, password));
+ return httpClientConfigBuilder
+ .setDefaultCredentialsProvider(credentialsProvider)
+ .setSSLContext(sslContext);
+ };
+
+ restClientBuilder.setHttpClientConfigCallback(httpClientConfigCallback);
+
+ }
+
+ // Create the transport with a Jackson mapper
+ this.transport = new RestClientTransport(restClientBuilder.build(), new JacksonJsonpMapper(mapper));
+ // override DEFAULT transport options from transport with a client with increased HTTP response buffer limit
+ TransportOptions transportOptions = new RestClientOptions.Builder(((RestClientOptions) this.transport.options()).restClientRequestOptions().toBuilder()
+ .setHttpAsyncResponseConsumerFactory(new HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory(BUFFER_LIMIT)))
+ .build();
+ this.client = new ElasticsearchClient(transport, transportOptions);
+ }
+
+ public ElasticsearchClient client() {
+ return client;
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (this.transport != null) {
+ this.transport.close();
+ }
+ }
+
+}
diff --git a/commons/com.b2international.index.test.tools/src/com/b2international/index/BaseIndexTest.java b/commons/com.b2international.index.test.tools/src/com/b2international/index/BaseIndexTest.java
index 6abe962e26e..eb08d90fa40 100644
--- a/commons/com.b2international.index.test.tools/src/com/b2international/index/BaseIndexTest.java
+++ b/commons/com.b2international.index.test.tools/src/com/b2international/index/BaseIndexTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2021 B2i Healthcare Pte Ltd, http://b2i.sg
+ * Copyright 2011-2022 B2i Healthcare Pte Ltd, http://b2i.sg
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,13 +43,21 @@ public abstract class BaseIndexTest {
protected static final String KEY2 = "key2";
@Rule
- public final IndexResource index = IndexResource.create(getTypes(), this::configureMapper, this::getIndexSettings);
+ public final IndexResource index = IndexResource.create(getTypes(), this::configureMapper, this::getIndexSettings, this::version);
/**
* @return the document types used by this test case
*/
protected abstract Collection> getTypes();
+ /**
+ * Subclasses may override this method to return an Elasticsearch major that they support. By default it returns `*`, which represents all versions are supported and tests should run on all versions.
+ *
+ * @return
+ */
+ protected String version() {
+ return "*";
+ }
protected void configureMapper(ObjectMapper mapper) {
diff --git a/commons/com.b2international.index.test.tools/src/com/b2international/index/IndexResource.java b/commons/com.b2international.index.test.tools/src/com/b2international/index/IndexResource.java
index f02f6c897d6..65b9d5a2375 100644
--- a/commons/com.b2international.index.test.tools/src/com/b2international/index/IndexResource.java
+++ b/commons/com.b2international.index.test.tools/src/com/b2international/index/IndexResource.java
@@ -15,6 +15,8 @@
*/
package com.b2international.index;
+import static org.junit.Assume.assumeTrue;
+
import java.util.Collection;
import java.util.Map;
import java.util.UUID;
@@ -49,7 +51,7 @@ public final class IndexResource extends ExternalResource {
*/
public static final String ES_USE_TEST_CONTAINER_VARIABLE = "so.index.es.useDocker";
- public static final String DEFAULT_ES_DOCKER_IMAGE = "docker.elastic.co/elasticsearch/elasticsearch:8.1.3";
+ public static final String DEFAULT_ES_DOCKER_IMAGE = "docker.elastic.co/elasticsearch/elasticsearch:8.3.2";
private static final AtomicBoolean INIT = new AtomicBoolean(false);
@@ -62,11 +64,13 @@ public final class IndexResource extends ExternalResource {
private final Collection> types;
private final Consumer objectMapperConfigurator;
private final Supplier