Skip to content

Commit 6f81af9

Browse files
committed
fix metadata mappings issue
1 parent a5dea84 commit 6f81af9

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

elasticsearch/helpers/vectorstore/_async/vectorstore.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,15 +302,14 @@ async def _create_index_if_not_exists(self) -> None:
302302
vector_field=self.vector_field,
303303
num_dimensions=self.num_dimensions,
304304
)
305-
306305
if self.metadata_mappings:
307306
metadata = mappings["properties"].get("metadata", {"properties": {}})
308307
for key in self.metadata_mappings.keys():
309308
if key in metadata:
310309
raise ValueError(f"metadata key {key} already exists in mappings")
311310

312311
metadata = dict(**metadata["properties"], **self.metadata_mappings)
313-
mappings["properties"] = {"metadata": {"properties": metadata}}
312+
mappings["properties"]["metadata"] = {"properties": metadata}
314313

315314
await self.retrieval_strategy.before_index_creation(
316315
self.es_client, self.text_field, self.vector_field

elasticsearch/helpers/vectorstore/_sync/vectorstore.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,15 +300,14 @@ def _create_index_if_not_exists(self) -> None:
300300
vector_field=self.vector_field,
301301
num_dimensions=self.num_dimensions,
302302
)
303-
304303
if self.metadata_mappings:
305304
metadata = mappings["properties"].get("metadata", {"properties": {}})
306305
for key in self.metadata_mappings.keys():
307306
if key in metadata:
308307
raise ValueError(f"metadata key {key} already exists in mappings")
309308

310309
metadata = dict(**metadata["properties"], **self.metadata_mappings)
311-
mappings["properties"] = {"metadata": {"properties": metadata}}
310+
mappings["properties"]["metadata"] = {"properties": metadata}
312311

313312
self.retrieval_strategy.before_index_creation(
314313
self.es_client, self.text_field, self.vector_field

test_elasticsearch/test_server/test_helpers_vectorstore/test_vectorstore.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -896,18 +896,26 @@ def test_metadata_mapping(
896896
}
897897
store = VectorStore(
898898
index_name=index_name,
899-
retrieval_strategy=DenseVectorStrategy(),
899+
retrieval_strategy=DenseVectorStrategy(distance=DistanceMetric.COSINE),
900900
embedding_service=FakeEmbeddings(),
901+
num_dimensions=10,
901902
es_client=sync_client,
902903
metadata_mappings=test_mappings,
903904
)
904905

905906
texts = ["foo", "foo", "foo"]
906-
metadatas = [{"page": i} for i in range(len(texts))]
907+
metadatas = [{"my_field": str(i)} for i in range(len(texts))]
907908
store.add_texts(texts=texts, metadatas=metadatas)
908909

909910
mapping_response = sync_client.indices.get_mapping(index=index_name)
910911
mapping_properties = mapping_response[index_name]["mappings"]["properties"]
912+
assert mapping_properties["vector_field"] == {
913+
"type": "dense_vector",
914+
"dims": 10,
915+
"index": True,
916+
"similarity": "cosine",
917+
}
918+
911919
assert "metadata" in mapping_properties
912920
for key, val in test_mappings.items():
913921
assert mapping_properties["metadata"]["properties"][key] == val

0 commit comments

Comments
 (0)