diff --git a/Jenkinsfile b/Jenkinsfile
index b9c7143647f..9c846ba626e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -293,7 +293,8 @@ stage('Configure') {
new LocalOpenSearchBuildEnvironment(version: '2.12.0', condition: TestCondition.ON_DEMAND),
new LocalOpenSearchBuildEnvironment(version: '2.13.0', condition: TestCondition.ON_DEMAND),
new LocalOpenSearchBuildEnvironment(version: '2.14.0', condition: TestCondition.ON_DEMAND),
- new LocalOpenSearchBuildEnvironment(version: '2.15.0', condition: TestCondition.BEFORE_MERGE),
+ new LocalOpenSearchBuildEnvironment(version: '2.15.0', condition: TestCondition.ON_DEMAND),
+ new LocalOpenSearchBuildEnvironment(version: '2.16.0', condition: TestCondition.BEFORE_MERGE),
// See https://opensearch.org/lines/2x.html for a list of all 2.x versions
// IMPORTANT: Make sure to update the documentation for any newly supported OpenSearch versions
// See version.org.opensearch.compatible.expected.text
diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactory.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactory.java
index bcc10039bd9..f9ebd127e7b 100644
--- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactory.java
+++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactory.java
@@ -245,7 +245,7 @@ private ElasticsearchProtocolDialect createProtocolDialectOpenSearchV1(Elasticse
}
private ElasticsearchProtocolDialect createProtocolDialectOpenSearchV2(ElasticsearchVersion version, int minor) {
- if ( minor > 15 ) {
+ if ( minor > 16 ) {
log.unknownElasticsearchVersion( version );
}
return new Elasticsearch70ProtocolDialect();
diff --git a/backend/elasticsearch/src/test/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactoryTest.java b/backend/elasticsearch/src/test/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactoryTest.java
index 3f819e77b80..fa35e6b61ee 100644
--- a/backend/elasticsearch/src/test/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactoryTest.java
+++ b/backend/elasticsearch/src/test/java/org/hibernate/search/backend/elasticsearch/dialect/impl/ElasticsearchDialectFactoryTest.java
@@ -412,14 +412,22 @@ public static List extends Arguments> params() {
ElasticsearchDistributionName.OPENSEARCH, "2.15.0", "2.15.0",
OpenSearch214ModelDialect.class, Elasticsearch70ProtocolDialect.class
),
- successWithWarning(
+ success(
ElasticsearchDistributionName.OPENSEARCH, "2.16", "2.16.0",
OpenSearch214ModelDialect.class, Elasticsearch70ProtocolDialect.class
),
- successWithWarning(
+ success(
ElasticsearchDistributionName.OPENSEARCH, "2.16.0", "2.16.0",
OpenSearch214ModelDialect.class, Elasticsearch70ProtocolDialect.class
),
+ successWithWarning(
+ ElasticsearchDistributionName.OPENSEARCH, "2.17", "2.17.0",
+ OpenSearch214ModelDialect.class, Elasticsearch70ProtocolDialect.class
+ ),
+ successWithWarning(
+ ElasticsearchDistributionName.OPENSEARCH, "2.17.0", "2.17.0",
+ OpenSearch214ModelDialect.class, Elasticsearch70ProtocolDialect.class
+ ),
successWithWarning(
ElasticsearchDistributionName.OPENSEARCH, "3", "3.0.0",
OpenSearch214ModelDialect.class, Elasticsearch70ProtocolDialect.class
@@ -511,20 +519,6 @@ private void testUnsupported() {
.hasMessageContaining( "'" + distributionName.toString() + ":" + configuredVersionString + "'" );
}
- private void testAmbiguous() {
- assertThatThrownBy(
- () -> {
- dialectFactory.createModelDialect( ElasticsearchVersion.of( distributionName, configuredVersionString ) );
- },
- "Test ambiguous version " + configuredVersionString
- )
- .isInstanceOf( SearchException.class )
- .hasMessageContaining( "HSEARCH400561" )
- .hasMessageContaining(
- "Ambiguous Elasticsearch version: '" + distributionName + ":" + configuredVersionString + "'." )
- .hasMessageContaining( "Please use a more precise version to remove the ambiguity" );
- }
-
private void testSuccessWithWarning() {
ElasticsearchVersion parsedConfiguredVersion = ElasticsearchVersion.of( distributionName, configuredVersionString );
ElasticsearchVersion parsedActualVersion = ElasticsearchVersion.of( distributionName, actualVersionString );
diff --git a/build/container/search-backend/amazon-opensearch-serverless.Dockerfile b/build/container/search-backend/amazon-opensearch-serverless.Dockerfile
index 6ad806bf315..7e03d5e20d6 100644
--- a/build/container/search-backend/amazon-opensearch-serverless.Dockerfile
+++ b/build/container/search-backend/amazon-opensearch-serverless.Dockerfile
@@ -4,4 +4,4 @@
# IMPORTANT! When updating the version of OpenSearch in this Dockerfile,
# make sure to update `version.org.opensearch.latest` property in a POM file,
# and to update the version in opensearch.Dockerfile as well.
-FROM docker.io/opensearchproject/opensearch:2.15.0
\ No newline at end of file
+FROM docker.io/opensearchproject/opensearch:2.16.0
\ No newline at end of file
diff --git a/build/container/search-backend/opensearch.Dockerfile b/build/container/search-backend/opensearch.Dockerfile
index 62395536e8d..13ea1618a48 100644
--- a/build/container/search-backend/opensearch.Dockerfile
+++ b/build/container/search-backend/opensearch.Dockerfile
@@ -4,4 +4,4 @@
# IMPORTANT! When updating the version of OpenSearch in this Dockerfile,
# make sure to update `version.org.opensearch.latest` property in a POM file,
# and to update the version in amazon-opensearch-serverless.Dockerfile as well.
-FROM docker.io/opensearchproject/opensearch:2.15.0
\ No newline at end of file
+FROM docker.io/opensearchproject/opensearch:2.16.0
\ No newline at end of file
diff --git a/build/parents/build/pom.xml b/build/parents/build/pom.xml
index 9ab6b12a081..3ea987565bb 100644
--- a/build/parents/build/pom.xml
+++ b/build/parents/build/pom.xml
@@ -69,13 +69,13 @@
-->
- 1.3 or 2.15
+ 1.3 or 2.16
1.3 or 2.x
- 2.15.0
+ 2.16.0
${version.org.opensearch.latest}
https://opensearch.org/docs/${parsed-version.org.opensearch.compatible.main.majorVersion}.${parsed-version.org.opensearch.compatible.main.minorVersion}
diff --git a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendFeatures.java b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendFeatures.java
index f428e2bd8aa..20d82d636f2 100644
--- a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendFeatures.java
+++ b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendFeatures.java
@@ -477,4 +477,16 @@ public Optional> rawValueEqualsComparator(FieldTypeDe
public boolean normalizesStringArgumentToPrefixPredicateForAnalyzedStringField() {
return false;
}
+
+ @Override
+ public boolean rangeAggregationsDoNotIgnoreQuery() {
+ // See https://github.com/opensearch-project/OpenSearch/issues/15169
+ // There is a problem with OpenSearch 2.16.0 where query is ignored for a range aggregation,
+ // leading to routes, being ignored and incorrect counts produced in the results:
+ return isActualVersion(
+ es -> true,
+ os -> os.isLessThan( "2.16.0" ),
+ aoss -> false
+ );
+ }
}
diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java
index aa48d48e688..9ef7686be69 100644
--- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java
+++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/operations/RangeAggregationDescriptor.java
@@ -6,6 +6,7 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import java.util.ArrayList;
import java.util.Arrays;
@@ -26,6 +27,7 @@
import org.hibernate.search.integrationtest.backend.tck.testsupport.operations.expectations.UnsupportedSingleFieldAggregationExpectations;
import org.hibernate.search.integrationtest.backend.tck.testsupport.types.FieldTypeDescriptor;
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.ExpectationsAlternative;
+import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TckConfiguration;
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TypeAssertionHelper;
import org.hibernate.search.util.common.data.Range;
import org.hibernate.search.util.impl.integrationtest.common.NormalizationUtils;
@@ -129,6 +131,10 @@ public AggregationScenario> onMultiValuedIndex() {
private AggregationScenario