跳到主要内容
非官方简体中文翻译,内容版权归 Mastra 所有,遵循 Apache-2.0 许可。

Elasticsearch vector store

The ElasticSearchVector class provides vector search using Elasticsearch with its dense_vector field type and k-NN search capabilities. It's part of the @mastra/elasticsearch package.

Installation
Installation的直接链接

npm install @mastra/elasticsearch@latest

Usage
Usage的直接链接

import { ElasticSearchVector } from "@mastra/elasticsearch";

const store = new ElasticSearchVector({
id: "elasticsearch-vector",
url: process.env.ELASTICSEARCH_URL,
});

// Create an index
await store.createIndex({
indexName: "my-collection",
dimension: 1536,
});

// Add vectors with metadata
const vectors = [[0.1, 0.2, ...], [0.3, 0.4, ...]];
const metadata = [
{ text: "first document", category: "A" },
{ text: "second document", category: "B" }
];
await store.upsert({
indexName: "my-collection",
vectors,
metadata,
});

// Query similar vectors
const results = await store.query({
indexName: "my-collection",
queryVector: [0.1, 0.2, ...],
topK: 10,
filter: { category: "A" },
});

Constructor options
Constructor options的直接链接

id:

string
Unique identifier for this vector store instance

url:

string
Elasticsearch connection URL (e.g., 'http://localhost:9200')

Methods
Methods的直接链接

createIndex()
createindex的直接链接

Creates a new index with the specified configuration.

indexName:

string
Name of the index to create

dimension:

number
Vector dimension (must match your embedding model)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
Distance metric for similarity search

upsert()
upsert的直接链接

Adds or updates vectors and their metadata in the index.

indexName:

string
Name of the index to insert into

vectors:

number[][]
Array of embedding vectors

metadata?:

Record<string, any>[]
Metadata for each vector

ids?:

string[]
Optional vector IDs (auto-generated if not provided)

query()
query的直接链接

Searches for similar vectors with optional metadata filtering.

indexName:

string
Name of the index to search in

queryVector:

number[]
Query vector to find similar vectors for

topK?:

number
= 10
Number of results to return

filter?:

Record<string, any>
Metadata filters

includeVector?:

boolean
= false
Whether to include vector data in results

describeIndex()
describeindex的直接链接

Gets information about an index.

indexName:

string
Name of the index to describe

Returns:

interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}

deleteIndex()
deleteindex的直接链接

Deletes an index and all its data.

indexName:

string
Name of the index to delete

listIndexes()
listindexes的直接链接

Lists all vector indexes.

Returns: Promise<string[]>

updateVector()
updatevector的直接链接

Update a single vector by ID or by metadata filter. Either id or filter must be provided, but not both.

indexName:

string
Name of the index containing the vector

id?:

string
ID of the vector to update (mutually exclusive with filter)

filter?:

Record<string, any>
Metadata filter to identify vector(s) to update (mutually exclusive with id)

update:

object
Update data containing vector and/or metadata

update.vector?:

number[]
New vector data

update.metadata?:

Record<string, any>
New metadata

deleteVector()
deletevector的直接链接

Deletes a single vector by its ID.

indexName:

string
Name of the index containing the vector

id:

string
ID of the vector to delete

deleteVectors()
deletevectors的直接链接

Delete multiple vectors by IDs or by metadata filter. Either ids or filter must be provided, but not both.

indexName:

string
Name of the index containing the vectors to delete

ids?:

string[]
Array of vector IDs to delete (mutually exclusive with filter)

filter?:

Record<string, any>
Metadata filter to identify vectors to delete (mutually exclusive with ids)

Response types
Response types的直接链接

Query results are returned in this format:

interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}