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, Long>> doCreate(Map, Long> expectedResult, TypeAssertionHelper helper) { + assumeTrue( + TckConfiguration.get().getBackendFeatures().rangeAggregationsDoNotIgnoreQuery() + ); + return new AggregationScenario, Long>>() { @Override public AggregationFinalStep, Long>> setup(SearchAggregationFactory factory, diff --git a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendFeatures.java b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendFeatures.java index d47465fccb0..d95ad1ff080 100644 --- a/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendFeatures.java +++ b/integrationtest/backend/tck/src/main/java/org/hibernate/search/integrationtest/backend/tck/testsupport/util/TckBackendFeatures.java @@ -192,4 +192,8 @@ public Optional> rawValueEqualsComparator(FieldTypeDe public boolean normalizesStringArgumentToPrefixPredicateForAnalyzedStringField() { return true; } + + public boolean rangeAggregationsDoNotIgnoreQuery() { + return true; + } } diff --git a/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/LibraryShowcaseSearchIT.java b/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/LibraryShowcaseSearchIT.java index dc4f592932c..73c36f5ad1b 100644 --- a/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/LibraryShowcaseSearchIT.java +++ b/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/LibraryShowcaseSearchIT.java @@ -27,6 +27,8 @@ import static org.hibernate.search.integrationtest.showcase.library.service.TestDataService.SUBURBAN_2_ID; import static org.hibernate.search.integrationtest.showcase.library.service.TestDataService.THESAURUS_OF_LANGUAGES_ID; import static org.hibernate.search.integrationtest.showcase.library.service.TestDataService.UNIVERSITY_ID; +import static org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.dialect.ElasticsearchTestDialect.isActualVersion; +import static org.junit.jupiter.api.Assumptions.assumeTrue; import java.util.Arrays; import java.util.Collections; @@ -462,6 +464,15 @@ void searchAndProjectToMethodLocalClass() { @Test void searchFaceted() { + assumeTrue( + TestActiveProfilesResolver.isLucene() + || isActualVersion( + es -> true, + // See https://github.com/opensearch-project/OpenSearch/issues/15169 + os -> os.isLessThan( "2.16.0" ), + aoss -> false + ) + ); LibraryFacetedSearchResult result = libraryService.searchFaceted( null, null, null, 0, 10 diff --git a/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/TestActiveProfilesResolver.java b/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/TestActiveProfilesResolver.java index a2a70c6e4d8..18b7a5f0aa8 100644 --- a/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/TestActiveProfilesResolver.java +++ b/integrationtest/showcase/library/src/test/java/org/hibernate/search/integrationtest/showcase/library/TestActiveProfilesResolver.java @@ -27,4 +27,8 @@ public String[] resolve(Class testClass) { public static String configuredBackend() { return System.getProperty( "test.backend", DEFAULT_BACKEND ); } + + public static boolean isLucene() { + return DEFAULT_BACKEND.equals( configuredBackend() ); + } }