diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1d6804a571f..c68e5548038 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -238,7 +238,8 @@ The following profiles are available: * `elasticsearch-7.10` for 7.10 * `elasticsearch-7.11` for 7.11 ([not open-source starting with this version](https://opensource.org/node/1099)) * `elasticsearch-7.12` for 7.12 to 7.17 - * `elasticsearch-8.0` for 8.0+ (**the default**) + * `elasticsearch-8.0` for 8.0 + * `elasticsearch-8.1` for 8.1+ (**the default**) * [OpenSearch](https://www.opensearch.org/) * `opensearch-1.0` for 1.0 * `opensearch-1.2` for 1.2+ diff --git a/Jenkinsfile b/Jenkinsfile index ff840c6acb0..6bdafec2760 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -256,7 +256,10 @@ stage('Configure') { condition: TestCondition.ON_DEMAND), new EsLocalBuildEnvironment(versionRange: '[7.12,8.0)', mavenProfile: 'elasticsearch-7.12', condition: TestCondition.AFTER_MERGE), - new EsLocalBuildEnvironment(versionRange: '[8.0,8.x)', mavenProfile: 'elasticsearch-8.0', + // Not testing 8.0 because we know there are problems in 8.0.1 (see https://hibernate.atlassian.net/browse/HSEARCH-4497) + new EsLocalBuildEnvironment(versionRange: '[8.0,8.1)', mavenProfile: 'elasticsearch-8.0', + condition: TestCondition.ON_DEMAND), + new EsLocalBuildEnvironment(versionRange: '[8.1,8.x)', mavenProfile: 'elasticsearch-8.1', condition: TestCondition.BEFORE_MERGE, isDefault: true), 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 ea9f4eb4f38..253a1c40812 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 @@ -22,6 +22,7 @@ import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch67ProtocolDialect; import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch70ProtocolDialect; import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch80ProtocolDialect; +import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch81ProtocolDialect; import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.ElasticsearchProtocolDialect; import org.hibernate.search.backend.elasticsearch.logging.impl.Log; import org.hibernate.search.util.common.AssertionFailure; @@ -125,7 +126,7 @@ else if ( major == 8 ) { } else { log.unknownElasticsearchVersion( version ); - return new Elasticsearch80ProtocolDialect(); + return new Elasticsearch81ProtocolDialect(); } } @@ -165,10 +166,13 @@ private ElasticsearchProtocolDialect createProtocolDialectElasticV7(Elasticsearc } private ElasticsearchProtocolDialect createProtocolDialectElasticV8(ElasticsearchVersion version, int minor) { - if ( minor > 0 ) { + if ( minor > 1 ) { log.unknownElasticsearchVersion( version ); } - return new Elasticsearch80ProtocolDialect(); + else if ( minor == 0 ) { + return new Elasticsearch80ProtocolDialect(); + } + return new Elasticsearch81ProtocolDialect(); } private ElasticsearchProtocolDialect createProtocolDialectOpenSearch(ElasticsearchVersion version) { diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch80ProtocolDialect.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch80ProtocolDialect.java index 01f5b142a2f..5335afd13d7 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch80ProtocolDialect.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch80ProtocolDialect.java @@ -17,7 +17,7 @@ import org.hibernate.search.backend.elasticsearch.work.builder.factory.impl.ElasticsearchWorkBuilderFactory; /** - * The protocol dialect for Elasticsearch 8.0 and later 8.x. + * The protocol dialect for Elasticsearch 8.0. */ public class Elasticsearch80ProtocolDialect implements ElasticsearchProtocolDialect { diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch81ProtocolDialect.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch81ProtocolDialect.java new file mode 100644 index 00000000000..0d806cc0976 --- /dev/null +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/dialect/protocol/impl/Elasticsearch81ProtocolDialect.java @@ -0,0 +1,43 @@ +/* + * Hibernate Search, full-text search for your domain model + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.search.backend.elasticsearch.dialect.protocol.impl; + +import org.hibernate.search.backend.elasticsearch.gson.spi.GsonProvider; +import org.hibernate.search.backend.elasticsearch.lowlevel.syntax.metadata.impl.Elasticsearch64IndexMetadataSyntax; +import org.hibernate.search.backend.elasticsearch.lowlevel.syntax.metadata.impl.ElasticsearchIndexMetadataSyntax; +import org.hibernate.search.backend.elasticsearch.lowlevel.syntax.search.impl.Elasticsearch81SearchSyntax; +import org.hibernate.search.backend.elasticsearch.lowlevel.syntax.search.impl.ElasticsearchSearchSyntax; +import org.hibernate.search.backend.elasticsearch.search.query.impl.Elasticsearch7SearchResultExtractorFactory; +import org.hibernate.search.backend.elasticsearch.search.query.impl.ElasticsearchSearchResultExtractorFactory; +import org.hibernate.search.backend.elasticsearch.work.builder.factory.impl.Elasticsearch7WorkBuilderFactory; +import org.hibernate.search.backend.elasticsearch.work.builder.factory.impl.ElasticsearchWorkBuilderFactory; + +/** + * The protocol dialect for Elasticsearch 8.1 and later 8.x. + */ +public class Elasticsearch81ProtocolDialect implements ElasticsearchProtocolDialect { + + @Override + public ElasticsearchIndexMetadataSyntax createIndexMetadataSyntax() { + return new Elasticsearch64IndexMetadataSyntax(); + } + + @Override + public ElasticsearchSearchSyntax createSearchSyntax() { + return new Elasticsearch81SearchSyntax(); + } + + @Override + public ElasticsearchWorkBuilderFactory createWorkBuilderFactory(GsonProvider gsonProvider) { + return new Elasticsearch7WorkBuilderFactory( gsonProvider ); + } + + @Override + public ElasticsearchSearchResultExtractorFactory createSearchResultExtractorFactory() { + return new Elasticsearch7SearchResultExtractorFactory(); + } +} diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch7SearchSyntax.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch7SearchSyntax.java index 316e9d322db..717560ffbce 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch7SearchSyntax.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch7SearchSyntax.java @@ -6,60 +6,17 @@ */ package org.hibernate.search.backend.elasticsearch.lowlevel.syntax.search.impl; -import java.util.List; - -import org.hibernate.search.backend.elasticsearch.gson.impl.JsonAccessor; -import org.hibernate.search.backend.elasticsearch.gson.impl.JsonArrayAccessor; - import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonPrimitive; +import com.google.gson.LongSerializationPolicy; /** - * The search syntax for ES7.0 and later. + * The search syntax for ES7.0 to ES8.0. */ -public class Elasticsearch7SearchSyntax implements ElasticsearchSearchSyntax { - - private static final JsonArrayAccessor DOCVALUE_FIELDS_ACCESSOR = - JsonAccessor.root().property( "docvalue_fields" ).asArray(); - - private static final JsonAccessor NESTED_ACCESSOR = JsonAccessor.root().property( "nested" ); - private static final JsonAccessor PATH_ACCESSOR = JsonAccessor.root().property( "path" ); - private static final JsonAccessor FILTER_ACCESSOR = JsonAccessor.root().property( "filter" ); - private static final JsonAccessor IGNORE_UNMAPPED_ACCESSOR = - JsonAccessor.root().property( "ignore_unmapped" ).asBoolean(); - - @Override - public String getTermAggregationOrderByTermToken() { - return "_key"; - } - - @Override - public void requestDocValues(JsonObject requestBody, JsonPrimitive fieldName) { - // The default format is the format defined in the mapping, which is what we want - DOCVALUE_FIELDS_ACCESSOR.addElementIfAbsent( requestBody, fieldName ); - } - - @Override - public void requestNestedSort(List nestedPathHierarchy, JsonObject innerObject, JsonObject filterOrNull) { - JsonObject nextNestedObjectTarget = innerObject; - for ( int i = 0; i < nestedPathHierarchy.size(); i++ ) { - String nestedPath = nestedPathHierarchy.get( i ); - - JsonObject nestedObject = new JsonObject(); - PATH_ACCESSOR.set( nestedObject, new JsonPrimitive( nestedPath ) ); - NESTED_ACCESSOR.set( nextNestedObjectTarget, nestedObject ); - if ( i == (nestedPathHierarchy.size() - 1) && filterOrNull != null ) { - FILTER_ACCESSOR.set( nestedObject, filterOrNull ); - } - - // the new api requires a recursion on the path hierarchy - nextNestedObjectTarget = nestedObject; - } - } +public class Elasticsearch7SearchSyntax extends Elasticsearch81SearchSyntax { @Override - public void requestGeoDistanceSortIgnoreUnmapped(JsonObject innerObject) { - IGNORE_UNMAPPED_ACCESSOR.set( innerObject, true ); + public JsonElement encodeLongForAggregation(Long value) { + // Workaround for https://github.com/elastic/elasticsearch/issues/81529 + return LongSerializationPolicy.STRING.serialize( value ); } } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch81SearchSyntax.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch81SearchSyntax.java new file mode 100644 index 00000000000..8bc150a27be --- /dev/null +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/Elasticsearch81SearchSyntax.java @@ -0,0 +1,72 @@ +/* + * Hibernate Search, full-text search for your domain model + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.search.backend.elasticsearch.lowlevel.syntax.search.impl; + +import java.util.List; + +import org.hibernate.search.backend.elasticsearch.gson.impl.JsonAccessor; +import org.hibernate.search.backend.elasticsearch.gson.impl.JsonArrayAccessor; + +import com.google.gson.JsonElement; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; + +/** + * The search syntax for ES7.0 and later. + */ +public class Elasticsearch81SearchSyntax implements ElasticsearchSearchSyntax { + + private static final JsonArrayAccessor DOCVALUE_FIELDS_ACCESSOR = + JsonAccessor.root().property( "docvalue_fields" ).asArray(); + + private static final JsonAccessor NESTED_ACCESSOR = JsonAccessor.root().property( "nested" ); + private static final JsonAccessor PATH_ACCESSOR = JsonAccessor.root().property( "path" ); + private static final JsonAccessor FILTER_ACCESSOR = JsonAccessor.root().property( "filter" ); + private static final JsonAccessor IGNORE_UNMAPPED_ACCESSOR = + JsonAccessor.root().property( "ignore_unmapped" ).asBoolean(); + + @Override + public String getTermAggregationOrderByTermToken() { + return "_key"; + } + + @Override + public void requestDocValues(JsonObject requestBody, JsonPrimitive fieldName) { + // The default format is the format defined in the mapping, which is what we want + DOCVALUE_FIELDS_ACCESSOR.addElementIfAbsent( requestBody, fieldName ); + } + + @Override + public void requestNestedSort(List nestedPathHierarchy, JsonObject innerObject, JsonObject filterOrNull) { + JsonObject nextNestedObjectTarget = innerObject; + for ( int i = 0; i < nestedPathHierarchy.size(); i++ ) { + String nestedPath = nestedPathHierarchy.get( i ); + + JsonObject nestedObject = new JsonObject(); + PATH_ACCESSOR.set( nestedObject, new JsonPrimitive( nestedPath ) ); + NESTED_ACCESSOR.set( nextNestedObjectTarget, nestedObject ); + if ( i == (nestedPathHierarchy.size() - 1) && filterOrNull != null ) { + FILTER_ACCESSOR.set( nestedObject, filterOrNull ); + } + + // the new api requires a recursion on the path hierarchy + nextNestedObjectTarget = nestedObject; + } + } + + @Override + public void requestGeoDistanceSortIgnoreUnmapped(JsonObject innerObject) { + IGNORE_UNMAPPED_ACCESSOR.set( innerObject, true ); + } + + @Override + public JsonElement encodeLongForAggregation(Long value) { + // https://github.com/elastic/elasticsearch/issues/81529 was solved in ES8.1 + return value == null ? JsonNull.INSTANCE : new JsonPrimitive( value ); + } +} diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/ElasticsearchSearchSyntax.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/ElasticsearchSearchSyntax.java index 9cf6c71b7c1..6052ff4d002 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/ElasticsearchSearchSyntax.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/lowlevel/syntax/search/impl/ElasticsearchSearchSyntax.java @@ -8,6 +8,7 @@ import java.util.List; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; @@ -21,4 +22,6 @@ public interface ElasticsearchSearchSyntax { void requestGeoDistanceSortIgnoreUnmapped(JsonObject innerObject); + JsonElement encodeLongForAggregation(Long value); + } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/impl/ElasticsearchRangeAggregation.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/impl/ElasticsearchRangeAggregation.java index a75dad203d1..1181e6660c4 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/impl/ElasticsearchRangeAggregation.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/search/aggregation/impl/ElasticsearchRangeAggregation.java @@ -153,7 +153,7 @@ public ElasticsearchRangeAggregation build() { private JsonElement convertToFieldValue(K value) { try { F converted = toFieldValueConverter.toDocumentValue( value, scope.toDocumentValueConvertContext() ); - return codec.encodeForAggregation( converted ); + return codec.encodeForAggregation( scope.searchSyntax(), converted ); } catch (RuntimeException e) { throw log.cannotConvertDslParameter( e.getMessage(), e, field.eventContext() ); diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchFieldCodec.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchFieldCodec.java index 34caebb2d21..fc547cb9678 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchFieldCodec.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchFieldCodec.java @@ -6,6 +6,8 @@ */ package org.hibernate.search.backend.elasticsearch.types.codec.impl; +import org.hibernate.search.backend.elasticsearch.lowlevel.syntax.search.impl.ElasticsearchSearchSyntax; + import com.google.gson.JsonElement; /** @@ -26,10 +28,12 @@ default JsonElement encodeForMissing(F value) { /** * Encodes a value for inclusion in an aggregation request. * + * + * @param searchSyntax The search syntax. * @param value The value to encode. * @return The encoded value. */ - default JsonElement encodeForAggregation(F value) { + default JsonElement encodeForAggregation(ElasticsearchSearchSyntax searchSyntax, F value) { return encode( value ); } diff --git a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchLongFieldCodec.java b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchLongFieldCodec.java index 1cc26fb083c..edcdd9b2506 100644 --- a/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchLongFieldCodec.java +++ b/backend/elasticsearch/src/main/java/org/hibernate/search/backend/elasticsearch/types/codec/impl/ElasticsearchLongFieldCodec.java @@ -7,11 +7,11 @@ package org.hibernate.search.backend.elasticsearch.types.codec.impl; import org.hibernate.search.backend.elasticsearch.gson.impl.JsonElementTypes; +import org.hibernate.search.backend.elasticsearch.lowlevel.syntax.search.impl.ElasticsearchSearchSyntax; import com.google.gson.JsonElement; import com.google.gson.JsonNull; import com.google.gson.JsonPrimitive; -import com.google.gson.LongSerializationPolicy; public class ElasticsearchLongFieldCodec implements ElasticsearchFieldCodec { public static final ElasticsearchLongFieldCodec INSTANCE = new ElasticsearchLongFieldCodec(); @@ -28,9 +28,8 @@ public JsonElement encode(Long value) { } @Override - public JsonElement encodeForAggregation(Long value) { - // Workaround for https://github.com/elastic/elasticsearch/issues/81529 - return LongSerializationPolicy.STRING.serialize( value ); + public JsonElement encodeForAggregation(ElasticsearchSearchSyntax searchSyntax, Long value) { + return searchSyntax.encodeLongForAggregation( value ); } @Override 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 a0c3fec4644..45542a2662e 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 @@ -23,6 +23,7 @@ import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch67ProtocolDialect; import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch70ProtocolDialect; import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch80ProtocolDialect; +import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.Elasticsearch81ProtocolDialect; import org.hibernate.search.backend.elasticsearch.dialect.protocol.impl.ElasticsearchProtocolDialect; import org.hibernate.search.util.common.SearchException; import org.hibernate.search.util.impl.test.annotation.TestForIssue; @@ -582,8 +583,8 @@ public void elastic_7_18_0() { @TestForIssue(jiraKey = "HSEARCH-4475") public void elastic_8() { testSuccess( - ElasticsearchDistributionName.ELASTIC, "8", "8.0.0", - Elasticsearch8ModelDialect.class, Elasticsearch80ProtocolDialect.class + ElasticsearchDistributionName.ELASTIC, "8", "8.1.0", + Elasticsearch8ModelDialect.class, Elasticsearch81ProtocolDialect.class ); } @@ -606,20 +607,38 @@ public void elastic_8_0_0() { } @Test - @TestForIssue(jiraKey = "HSEARCH-4475") + @TestForIssue(jiraKey = "HSEARCH-4505") public void elastic_8_1() { - testSuccessWithWarning( + testSuccess( ElasticsearchDistributionName.ELASTIC, "8.1", "8.1.0", - Elasticsearch8ModelDialect.class, Elasticsearch80ProtocolDialect.class + Elasticsearch8ModelDialect.class, Elasticsearch81ProtocolDialect.class ); } @Test - @TestForIssue(jiraKey = "HSEARCH-4475") + @TestForIssue(jiraKey = "HSEARCH-4505") public void elastic_8_1_0() { - testSuccessWithWarning( + testSuccess( ElasticsearchDistributionName.ELASTIC, "8.1.0", "8.1.0", - Elasticsearch8ModelDialect.class, Elasticsearch80ProtocolDialect.class + Elasticsearch8ModelDialect.class, Elasticsearch81ProtocolDialect.class + ); + } + + @Test + @TestForIssue(jiraKey = "HSEARCH-4505") + public void elastic_8_2() { + testSuccessWithWarning( + ElasticsearchDistributionName.ELASTIC, "8.2", "8.2.0", + Elasticsearch8ModelDialect.class, Elasticsearch81ProtocolDialect.class + ); + } + + @Test + @TestForIssue(jiraKey = "HSEARCH-4505") + public void elastic_8_2_0() { + testSuccessWithWarning( + ElasticsearchDistributionName.ELASTIC, "8.2.0", "8.2.0", + Elasticsearch8ModelDialect.class, Elasticsearch81ProtocolDialect.class ); } @@ -627,7 +646,7 @@ public void elastic_8_1_0() { public void elastic_9_0_0() { testSuccessWithWarning( ElasticsearchDistributionName.ELASTIC, "9.0.0", "9.0.0", - Elasticsearch8ModelDialect.class, Elasticsearch80ProtocolDialect.class + Elasticsearch8ModelDialect.class, Elasticsearch81ProtocolDialect.class ); } diff --git a/integrationtest/backend/elasticsearch/pom.xml b/integrationtest/backend/elasticsearch/pom.xml index f0fa3f5ec82..5ab3dcb7586 100644 --- a/integrationtest/backend/elasticsearch/pom.xml +++ b/integrationtest/backend/elasticsearch/pom.xml @@ -256,9 +256,19 @@ - + elasticsearch-8.0 + + + + + + + + + + elasticsearch-8.1 diff --git a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/schema/management/ElasticsearchIndexSchemaManagerUpdateCustomMappingIT.java b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/schema/management/ElasticsearchIndexSchemaManagerUpdateCustomMappingIT.java index b237906716d..7eefea314be 100644 --- a/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/schema/management/ElasticsearchIndexSchemaManagerUpdateCustomMappingIT.java +++ b/integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/schema/management/ElasticsearchIndexSchemaManagerUpdateCustomMappingIT.java @@ -161,12 +161,12 @@ public void illegalUpdate() { elasticsearchClient.index( index.name() ).type().putMapping( " { " + " '_source':{ " + - " 'enabled':true " + + " 'enabled': false " + " } " + " } " ); - assertThatThrownBy( () -> setupAndUpdateIndex( "no-overlapping.json" ) ) + assertThatThrownBy( () -> setupAndUpdateIndex( "source-enabled.json" ) ) .isInstanceOf( SearchException.class ) .hasMessageContainingAll( "conflicts", "_source" ); } diff --git a/integrationtest/backend/elasticsearch/src/test/resources/custom-index-mapping/source-enabled.json b/integrationtest/backend/elasticsearch/src/test/resources/custom-index-mapping/source-enabled.json new file mode 100644 index 00000000000..bfff22dfde2 --- /dev/null +++ b/integrationtest/backend/elasticsearch/src/test/resources/custom-index-mapping/source-enabled.json @@ -0,0 +1,5 @@ +{ + "_source": { + "enabled": true + } +} \ No newline at end of file diff --git a/parents/integrationtest/pom.xml b/parents/integrationtest/pom.xml index 1c7fd1fc16d..73bee6f74f7 100644 --- a/parents/integrationtest/pom.xml +++ b/parents/integrationtest/pom.xml @@ -579,9 +579,20 @@ - + elasticsearch-8.0 + + ${test.elasticsearch.run.skip} + elastic + ${version.org.elasticsearch.latest-8.0} + org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.dialect.Elasticsearch712TestDialect + + + + + + elasticsearch-8.1 @@ -591,7 +602,7 @@ ${test.elasticsearch.run.skip} elastic - ${version.org.elasticsearch.latest-8.0} + ${version.org.elasticsearch.latest-8.1} org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.dialect.Elasticsearch712TestDialect diff --git a/pom.xml b/pom.xml index 2ce96f1ec72..8bc7ce764a1 100644 --- a/pom.xml +++ b/pom.xml @@ -206,17 +206,18 @@ 8.1.0 - ${version.org.elasticsearch.latest-8.0} + to make sure the corresponding profile (e.g. elasticsearch-8.1) becomes the default. --> + ${version.org.elasticsearch.latest-8.1} https://www.elastic.co/guide/en/elasticsearch/reference/${parsed-version.org.elasticsearch.compatible.main.majorVersion}.${parsed-version.org.elasticsearch.compatible.main.minorVersion} - 5.6, 6.8, 7.10, 7.17 or 8.0 + 5.6, 6.8, 7.10, 7.17 or 8.1 1.0 or 1.2 - 6.0 or 7.0 + 7.0 or 8.0 - 8.0.0 + 8.1.0 + 8.0.1 7.17.0 7.16.3