diff --git a/src/main/asciidoc/reference/elasticsearch-migration-guide-5.0-5.1.adoc b/src/main/asciidoc/reference/elasticsearch-migration-guide-5.0-5.1.adoc index 113b2643a..58482570e 100644 --- a/src/main/asciidoc/reference/elasticsearch-migration-guide-5.0-5.1.adoc +++ b/src/main/asciidoc/reference/elasticsearch-migration-guide-5.0-5.1.adoc @@ -6,6 +6,11 @@ This section describes breaking changes from version 5.0.x to 5.1.x and how remo [[elasticsearch-migration-guide-5.0-5.1.breaking-changes]] == Breaking Changes -In the `org.springframework.data.elasticsearch.core.index.AliasData` class, which is used for alias information -returned from Elasticsearch, the property `filter` (of type `Document`) is replaced by `filterQuery` which is of type +In the `org.springframework.data.elasticsearch.core.index.AliasData` class, which is used for alias information returned from Elasticsearch, the property `filter` (of type `Document`) is replaced by `filterQuery` which is of type `org.springframework.data.elasticsearch.core.query.Query`. + +`org.springframework.data.elasticsearch.annotations.Similarity` was an enum class until 5.1. This enum was used in the `@Field` annotation to specify a similarity value. +But besides the values defined by the enum, it is possible to have similarities with custom names in Elasticsearch. +Therefore, the annotation property was changed from the type of the enum to a simple `String`. +The previous enum values like `Similarity.Default` do still exist as String constants, so existing code will compile unmodified. +Adaptions are necessary when this enum was used at other places than as a property of the `@Field` annotation. diff --git a/src/main/java/org/springframework/data/elasticsearch/annotations/Field.java b/src/main/java/org/springframework/data/elasticsearch/annotations/Field.java index 3210ce512..84d6b240e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/annotations/Field.java +++ b/src/main/java/org/springframework/data/elasticsearch/annotations/Field.java @@ -140,7 +140,7 @@ /** * @since 4.0 */ - Similarity similarity() default Similarity.Default; + String similarity() default Similarity.Default; /** * @since 4.0 diff --git a/src/main/java/org/springframework/data/elasticsearch/annotations/InnerField.java b/src/main/java/org/springframework/data/elasticsearch/annotations/InnerField.java index 1a7e14ecf..3d1bd46e6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/annotations/InnerField.java +++ b/src/main/java/org/springframework/data/elasticsearch/annotations/InnerField.java @@ -109,7 +109,7 @@ /** * @since 4.0 */ - Similarity similarity() default Similarity.Default; + String similarity() default Similarity.Default; /** * @since 4.0 diff --git a/src/main/java/org/springframework/data/elasticsearch/annotations/Similarity.java b/src/main/java/org/springframework/data/elasticsearch/annotations/Similarity.java index 8761cf29b..dd1ce02a6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/annotations/Similarity.java +++ b/src/main/java/org/springframework/data/elasticsearch/annotations/Similarity.java @@ -19,18 +19,9 @@ * @author Peter-Josef Meisch * @since 4.0 */ -public enum Similarity { - Default("default"), BM25("BM25"), classic("classic"), Boolean("boolean"); - - // need to use a custom name because 'boolean' can't be used as enum name - private final String toStringName; - - Similarity(String name) { - this.toStringName = name; - } - - @Override - public String toString() { - return toStringName; - } +public final class Similarity { + public final static String Default = "default"; + public final static String BM25 = "BM25"; + public final static String classic = "classic"; + public final static String Boolean = "boolean"; } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java index 1489bb9d2..fcd15ebe0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java @@ -110,7 +110,7 @@ public final class MappingParameters { private final Integer dims; private final String searchAnalyzer; private final double scalingFactor; - private final Similarity similarity; + private final String similarity; private final boolean store; private final TermVector termVector; private final FieldType type; @@ -330,8 +330,8 @@ public void writeTypeAndParametersTo(ObjectNode objectNode) throws IOException { objectNode.put(FIELD_PARAM_POSITION_INCREMENT_GAP, positionIncrementGap); } - if (similarity != Similarity.Default) { - objectNode.put(FIELD_PARAM_SIMILARITY, similarity.toString()); + if (!Similarity.Default.equals(similarity)) { + objectNode.put(FIELD_PARAM_SIMILARITY, similarity); } if (termVector != TermVector.none) {