Skip to content

Commit c77d674

Browse files
committed
iter
1 parent fcd9a28 commit c77d674

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2910,34 +2910,35 @@ public List<Object> fetchValues(Source source, int doc, List<Object> ignoredValu
29102910
return List.of();
29112911
}
29122912
try {
2913-
if (sourceValue instanceof List<?> v) {
2914-
for (Object o : v) {
2915-
values.add(NumberFieldMapper.NumberType.FLOAT.parse(o, false));
2916-
}
2917-
} else if (sourceValue instanceof String s) {
2918-
if ((element.elementType() == BYTE_ELEMENT.elementType()
2919-
|| element.elementType() == BIT_ELEMENT.elementType())
2920-
&& s.length() == dims * 2
2921-
&& ByteElement.isMaybeHexString(s)) {
2922-
byte[] bytes;
2923-
try {
2924-
bytes = HexFormat.of().parseHex(s);
2925-
} catch (IllegalArgumentException e) {
2926-
bytes = Base64.getDecoder().decode(s);
2927-
}
2928-
for (byte b : bytes) {
2929-
values.add((float) b);
2913+
switch (sourceValue) {
2914+
case List<?> v -> {
2915+
for (Object o : v) {
2916+
values.add(NumberFieldMapper.NumberType.FLOAT.parse(o, false));
29302917
}
2931-
} else {
2932-
byte[] floatBytes = Base64.getDecoder().decode(s);
2933-
float[] floats = new float[dims];
2934-
ByteBuffer.wrap(floatBytes).asFloatBuffer().get(floats);
2935-
for (float f : floats) {
2936-
values.add(f);
2918+
}
2919+
case String s -> {
2920+
if ((element.elementType() == ElementType.BYTE || element.elementType() == ElementType.BIT)
2921+
&& s.length() == dims * 2
2922+
&& ByteElement.isMaybeHexString(s)) {
2923+
byte[] bytes;
2924+
try {
2925+
bytes = HexFormat.of().parseHex(s);
2926+
} catch (IllegalArgumentException e) {
2927+
bytes = Base64.getDecoder().decode(s);
2928+
}
2929+
for (byte b : bytes) {
2930+
values.add((float) b);
2931+
}
2932+
} else {
2933+
byte[] floatBytes = Base64.getDecoder().decode(s);
2934+
float[] floats = new float[dims];
2935+
ByteBuffer.wrap(floatBytes).asFloatBuffer().get(floats);
2936+
for (float f : floats) {
2937+
values.add(f);
2938+
}
29372939
}
29382940
}
2939-
} else {
2940-
ignoredValues.add(sourceValue);
2941+
default -> ignoredValues.add(sourceValue);
29412942
}
29422943
} catch (Exception e) {
29432944
// if parsing fails here then it would have failed at index time

0 commit comments

Comments
 (0)