Skip to content

Commit c9ec39e

Browse files
committed
Fix ElasticsearchVectorStore to parse similarity option correctly
- Check for valid DenseVectorSimilarity by using DenseVectorSimilarity's jsonValue with SimilarityFunction string - Update elasticsearch image elasticsearch:8.18.1 Signed-off-by: Ilayaperumal Gopinathan <ilayaperumal.gopinathan@broadcom.com>
1 parent 8b9d93f commit c9ec39e

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

vector-stores/spring-ai-elasticsearch-store/src/main/java/org/springframework/ai/vectorstore/elasticsearch/ElasticsearchVectorStore.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,16 +329,26 @@ private void createIndexMapping() {
329329
try {
330330
this.elasticsearchClient.indices()
331331
.create(cr -> cr.index(this.options.getIndexName())
332-
.mappings(map -> map.properties(this.options.getEmbeddingFieldName(),
333-
p -> p.denseVector(dv -> dv
334-
.similarity(DenseVectorSimilarity.valueOf(this.options.getSimilarity().toString()))
335-
.dims(this.options.getDimensions())))));
332+
.mappings(
333+
map -> map.properties(this.options.getEmbeddingFieldName(),
334+
p -> p.denseVector(dv -> dv
335+
.similarity(parseSimilarity(this.options.getSimilarity().toString()))
336+
.dims(this.options.getDimensions())))));
336337
}
337338
catch (IOException e) {
338339
throw new RuntimeException(e);
339340
}
340341
}
341342

343+
private DenseVectorSimilarity parseSimilarity(String similarity) {
344+
for (DenseVectorSimilarity sim : DenseVectorSimilarity.values()) {
345+
if (sim.jsonValue().equalsIgnoreCase(similarity)) {
346+
return sim;
347+
}
348+
}
349+
throw new IllegalArgumentException("Unsupported similarity: " + similarity);
350+
}
351+
342352
@Override
343353
public void afterPropertiesSet() {
344354
if (!this.initializeSchema) {

vector-stores/spring-ai-elasticsearch-store/src/test/java/org/springframework/ai/vectorstore/elasticsearch/ElasticsearchImage.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
*/
2424
public final class ElasticsearchImage {
2525

26-
public static final DockerImageName DEFAULT_IMAGE = DockerImageName
27-
.parse("docker.elastic.co/elasticsearch/elasticsearch:8.16.1");
26+
public static final DockerImageName DEFAULT_IMAGE = DockerImageName.parse("elasticsearch:8.18.1");
2827

2928
private ElasticsearchImage() {
3029

0 commit comments

Comments
 (0)