Skip to content

Commit e997b39

Browse files
committed
Fix max dim value for dense vector.
Closes #2911
1 parent 41e3257 commit e997b39

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ private MappingParameters(Field field) {
171171
positiveScoreImpact = field.positiveScoreImpact();
172172
dims = field.dims();
173173
if (type == FieldType.Dense_Vector) {
174-
Assert.isTrue(dims >= 1 && dims <= 2048,
175-
"Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 2048.");
174+
Assert.isTrue(dims >= 1 && dims <= 4096,
175+
"Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 4096.");
176176
}
177177
Assert.isTrue(field.enabled() || type == FieldType.Object, "enabled false is only allowed for field type object");
178178
enabled = field.enabled();
@@ -214,8 +214,8 @@ private MappingParameters(InnerField field) {
214214
positiveScoreImpact = field.positiveScoreImpact();
215215
dims = field.dims();
216216
if (type == FieldType.Dense_Vector) {
217-
Assert.isTrue(dims >= 1 && dims <= 2048,
218-
"Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 2048.");
217+
Assert.isTrue(dims >= 1 && dims <= 4096,
218+
"Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 4096.");
219219
}
220220
enabled = true;
221221
eagerGlobalOrdinals = field.eagerGlobalOrdinals();

src/test/java/org/springframework/data/elasticsearch/core/index/MappingParametersTest.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ void shouldAllowEnabledFalseOnlyOnObjectFields() {
7070
}
7171

7272
@Test // #1700
73-
@DisplayName("should not allow dims length greater than 2048 for dense_vector type")
74-
void shouldNotAllowDimsLengthGreaterThan2048ForDenseVectorType() {
73+
@DisplayName("should not allow dims length greater than 4096 for dense_vector type")
74+
void shouldNotAllowDimsLengthGreaterThan4096ForDenseVectorType() {
7575
ElasticsearchPersistentEntity<?> failEntity = elasticsearchConverter.get().getMappingContext()
7676
.getRequiredPersistentEntity(DenseVectorInvalidDimsClass.class);
7777
Annotation annotation = failEntity.getRequiredPersistentProperty("dense_vector").findAnnotation(Field.class);
@@ -90,21 +90,28 @@ void shouldRequireDimsParameterForDenseVectorType() {
9090
}
9191

9292
static class AnnotatedClass {
93-
@Nullable @Field private String field;
94-
@Nullable @MultiField(mainField = @Field,
93+
@Nullable
94+
@Field private String field;
95+
@Nullable
96+
@MultiField(mainField = @Field,
9597
otherFields = { @InnerField(suffix = "test", type = FieldType.Text) }) private String mainField;
96-
@Nullable @Field(type = FieldType.Text, docValues = false) private String docValuesText;
97-
@Nullable @Field(type = FieldType.Nested, docValues = false) private String docValuesNested;
98-
@Nullable @Field(type = Object, enabled = true) private String enabledObject;
99-
@Nullable @Field(type = Object, enabled = false) private String disabledObject;
98+
@Nullable
99+
@Field(type = FieldType.Text, docValues = false) private String docValuesText;
100+
@Nullable
101+
@Field(type = FieldType.Nested, docValues = false) private String docValuesNested;
102+
@Nullable
103+
@Field(type = Object, enabled = true) private String enabledObject;
104+
@Nullable
105+
@Field(type = Object, enabled = false) private String disabledObject;
100106
}
101107

102108
static class InvalidEnabledFieldClass {
103-
@Nullable @Field(type = FieldType.Text, enabled = false) private String disabledObject;
109+
@Nullable
110+
@Field(type = FieldType.Text, enabled = false) private String disabledObject;
104111
}
105112

106113
static class DenseVectorInvalidDimsClass {
107-
@Field(type = Dense_Vector, dims = 2049) private float[] dense_vector;
114+
@Field(type = Dense_Vector, dims = 4097) private float[] dense_vector;
108115
}
109116

110117
static class DenseVectorMissingDimsClass {

0 commit comments

Comments
 (0)