Add cuvs-bench-elastic: HTTP backend for Elasticsearch GPU vector search#1907
Draft
afourniernv wants to merge 4 commits intorapidsai:mainfrom
Draft
Add cuvs-bench-elastic: HTTP backend for Elasticsearch GPU vector search#1907afourniernv wants to merge 4 commits intorapidsai:mainfrom
afourniernv wants to merge 4 commits intorapidsai:mainfrom
Conversation
jnke2016
reviewed
Mar 11, 2026
| ep.load()() | ||
| except ImportError as e: | ||
| if "elasticsearch" in str(e).lower() or "elasticsearch" in str(e): | ||
| raise ImportError( |
Contributor
There was a problem hiding this comment.
Nice. This is what I discussed with @cjnolet pertaining to lazy import and used Milvus as an example
class MilvusBackend(BenchmarkBackend):
def __init__(self, config: Dict[str, Any]):
super().__init__(config)
try:
from pymilvus import connections, Collection
except ImportError:
raise ImportError(
"pymilvus is required for MilvusBackend. "
"Install with: pip install pymilvus"
)
connections.connect(host=config["host"], port=config["port"])
Introduce cuvs-bench-elastic as an optional plugin for cuvs-bench that provides an Elasticsearch backend. The backend communicates with Elasticsearch via HTTP and supports HNSW indexing with optional GPU acceleration when using the Elasticsearch GPU image (cuVS-accelerated vector search). - Add cuvs_bench_elastic package with backend and config loader entry points - Extend cuvs_bench registry and search spaces for pluggable backends - Add elastic and integration optional dependencies to cuvs-bench - Add modularization tests and integration test scaffolding (disabled until CI has ES GPU image, cuVS libs, and GPU runner) Signed-off-by: Alex Fournier <afournier@nvidia.com>
Use single-doc format (_index, _id, vector_field) instead of two-part NDJSON (index action + source) so ES accepts the bulk request. Signed-off-by: Alex Fournier <afournier@nvidia.com>
Expose ELASTIC constant and convenience wrappers for build-only, search-only, or full benchmark runs. Signed-off-by: Alex Fournier <afournier@nvidia.com>
ec0b3e3 to
7b25521
Compare
- Document run_build, run_search, run_benchmark convenience API - Document ELASTIC constant and orchestrator usage - Add username/password support in config loader (converts to basic_auth) Signed-off-by: Alex Fournier <afournier@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduce cuvs-bench-elastic as an optional plugin for cuvs-bench that provides an Elasticsearch backend. The backend communicates with Elasticsearch via HTTP and supports HNSW indexing with optional GPU acceleration when using the Elasticsearch GPU image (cuVS-accelerated vector search).