Fix max dim value for dense vector.

Closes #2911
This commit is contained in:
Peter-Josef Meisch 2024-05-18 18:11:43 +02:00
parent 41e32576e3
commit e997b39f68
No known key found for this signature in database
GPG Key ID: DE108246970C7708
2 changed files with 21 additions and 14 deletions

View File

@ -171,8 +171,8 @@ public final class MappingParameters {
positiveScoreImpact = field.positiveScoreImpact(); positiveScoreImpact = field.positiveScoreImpact();
dims = field.dims(); dims = field.dims();
if (type == FieldType.Dense_Vector) { if (type == FieldType.Dense_Vector) {
Assert.isTrue(dims >= 1 && dims <= 2048, Assert.isTrue(dims >= 1 && dims <= 4096,
"Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 2048."); "Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 4096.");
} }
Assert.isTrue(field.enabled() || type == FieldType.Object, "enabled false is only allowed for field type object"); Assert.isTrue(field.enabled() || type == FieldType.Object, "enabled false is only allowed for field type object");
enabled = field.enabled(); enabled = field.enabled();
@ -214,8 +214,8 @@ public final class MappingParameters {
positiveScoreImpact = field.positiveScoreImpact(); positiveScoreImpact = field.positiveScoreImpact();
dims = field.dims(); dims = field.dims();
if (type == FieldType.Dense_Vector) { if (type == FieldType.Dense_Vector) {
Assert.isTrue(dims >= 1 && dims <= 2048, Assert.isTrue(dims >= 1 && dims <= 4096,
"Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 2048."); "Invalid required parameter! Dense_Vector value \"dims\" must be between 1 and 4096.");
} }
enabled = true; enabled = true;
eagerGlobalOrdinals = field.eagerGlobalOrdinals(); eagerGlobalOrdinals = field.eagerGlobalOrdinals();

View File

@ -70,8 +70,8 @@ public class MappingParametersTest extends MappingContextBaseTests {
} }
@Test // #1700 @Test // #1700
@DisplayName("should not allow dims length greater than 2048 for dense_vector type") @DisplayName("should not allow dims length greater than 4096 for dense_vector type")
void shouldNotAllowDimsLengthGreaterThan2048ForDenseVectorType() { void shouldNotAllowDimsLengthGreaterThan4096ForDenseVectorType() {
ElasticsearchPersistentEntity<?> failEntity = elasticsearchConverter.get().getMappingContext() ElasticsearchPersistentEntity<?> failEntity = elasticsearchConverter.get().getMappingContext()
.getRequiredPersistentEntity(DenseVectorInvalidDimsClass.class); .getRequiredPersistentEntity(DenseVectorInvalidDimsClass.class);
Annotation annotation = failEntity.getRequiredPersistentProperty("dense_vector").findAnnotation(Field.class); Annotation annotation = failEntity.getRequiredPersistentProperty("dense_vector").findAnnotation(Field.class);
@ -90,21 +90,28 @@ public class MappingParametersTest extends MappingContextBaseTests {
} }
static class AnnotatedClass { static class AnnotatedClass {
@Nullable @Field private String field; @Nullable
@Nullable @MultiField(mainField = @Field, @Field private String field;
@Nullable
@MultiField(mainField = @Field,
otherFields = { @InnerField(suffix = "test", type = FieldType.Text) }) private String mainField; otherFields = { @InnerField(suffix = "test", type = FieldType.Text) }) private String mainField;
@Nullable @Field(type = FieldType.Text, docValues = false) private String docValuesText; @Nullable
@Nullable @Field(type = FieldType.Nested, docValues = false) private String docValuesNested; @Field(type = FieldType.Text, docValues = false) private String docValuesText;
@Nullable @Field(type = Object, enabled = true) private String enabledObject; @Nullable
@Nullable @Field(type = Object, enabled = false) private String disabledObject; @Field(type = FieldType.Nested, docValues = false) private String docValuesNested;
@Nullable
@Field(type = Object, enabled = true) private String enabledObject;
@Nullable
@Field(type = Object, enabled = false) private String disabledObject;
} }
static class InvalidEnabledFieldClass { static class InvalidEnabledFieldClass {
@Nullable @Field(type = FieldType.Text, enabled = false) private String disabledObject; @Nullable
@Field(type = FieldType.Text, enabled = false) private String disabledObject;
} }
static class DenseVectorInvalidDimsClass { static class DenseVectorInvalidDimsClass {
@Field(type = Dense_Vector, dims = 2049) private float[] dense_vector; @Field(type = Dense_Vector, dims = 4097) private float[] dense_vector;
} }
static class DenseVectorMissingDimsClass { static class DenseVectorMissingDimsClass {