pub struct ElasticsearchVectorIndex { /* private fields */ }Expand description
Async vector index backed by an Elasticsearch 8.x index.
The index is created on construction (a dense_vector field with cosine
similarity) if it does not already exist. All operations are async over a
plain reqwest::Client. Connection-string credentials embedded in url
(e.g. https://user:pass@host) are used for the request but never leaked in
error messages — see redact_credentials.
Implementations§
Source§impl ElasticsearchVectorIndex
impl ElasticsearchVectorIndex
Sourcepub async fn new(url: &str, index: &str, dim: usize) -> Result<Self>
pub async fn new(url: &str, index: &str, dim: usize) -> Result<Self>
Connect to url (e.g. http://localhost:9200) and ensure index
exists with a dense_vector field of dim dimensions and cosine
similarity.
Sourcepub async fn delete_index(&self) -> Result<()>
pub async fn delete_index(&self) -> Result<()>
Drop the backing index (useful for test cleanup or full reset).
Trait Implementations§
Source§impl AsyncVectorIndex for ElasticsearchVectorIndex
impl AsyncVectorIndex for ElasticsearchVectorIndex
Source§fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 [f32],
k: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<SearchHit>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 [f32],
k: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<SearchHit>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
kNN search over the dense_vector field. Each SearchHit.score is the
ES knn _score ((1 + cosine) / 2), which is not comparable across
backends — see Score semantics.
Source§fn add<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
vectors: &'life1 [Vec<f32>],
ids: &'life2 [u64],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn add<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
vectors: &'life1 [Vec<f32>],
ids: &'life2 [u64],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Upsert vectors keyed by their explicit external IDs. Read more
Source§fn remove<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [u64],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove<'life0, 'life1, 'async_trait>(
&'life0 self,
ids: &'life1 [u64],
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove vectors by their external IDs. Read more
Source§fn search_filtered<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 [f32],
k: usize,
allowlist: &'life2 [u64],
) -> Pin<Box<dyn Future<Output = Result<Vec<SearchHit>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn search_filtered<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 [f32],
k: usize,
allowlist: &'life2 [u64],
) -> Pin<Box<dyn Future<Output = Result<Vec<SearchHit>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Search restricted to an allowlist of candidate IDs. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for ElasticsearchVectorIndex
impl !UnwindSafe for ElasticsearchVectorIndex
impl Freeze for ElasticsearchVectorIndex
impl Send for ElasticsearchVectorIndex
impl Sync for ElasticsearchVectorIndex
impl Unpin for ElasticsearchVectorIndex
impl UnsafeUnpin for ElasticsearchVectorIndex
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.