weaviate/weaviate · error
explorer: get class: vector search: %w
Error message
explorer: get class: vector search: %w
What it means
Explorer.getClassKeywordBased wraps errors from searcher.Search (the vector/keyword store search) when fetching a class, preserving the underlying cause with %w. Use errors.As to inspect the wrapped cause; a wrapped inverted.MissingIndexError is passed through unwrapped.
Source
Thrown at usecases/traverser/explorer.go:244
if len(params.KeywordRanking.Query) == 0 {
return nil, errors.Errorf("keyword search (bm25) must have query set")
}
if len(params.AdditionalProperties.ModuleParams) > 0 {
// if a module-specific additional prop is set, assume it needs the vector
// present for backward-compatibility. This could be improved by actually
// asking the module based on specific conditions
params.AdditionalProperties.Vector = true
}
res, err := e.searcher.Search(ctx, params)
if err != nil {
var e inverted.MissingIndexError
if errors.As(err, &e) {
return nil, e
}
return nil, fmt.Errorf("explorer: get class: vector search: %w", err)
}
res = e.applyBoostIfNeeded(res, params.Boost, false)
if e.modulesProvider != nil {
res, err = e.modulesProvider.GetExploreAdditionalExtend(ctx, res, params.AdditionalProperties.ModuleParams, nil, params.ModuleParams)
if err != nil {
return nil, fmt.Errorf("explorer: get class: extend: %w", err)
}
}
if params.GroupBy != nil {
groupedResults, err := e.groupSearchResults(ctx, res, params.GroupBy)
if err != nil {
return nil, err
}
return groupedResults, nil
}View on GitHub (pinned to 75aa4b6d11)
Solutions
- Inspect the wrapped cause with errors.As / check server logs for the root error from searcher.Search
- If a property index is missing, trigger reindexing or wait for async indexing to complete
- Retry after shard migration/node recovery completes
- Verify disk health and LSM store integrity on the affected shard
Defensive patterns
Strategy: retry
Validate before calling
// check class & property readiness before querying
exists, err := client.Schema().ClassExistence().WithClassName(className).Do(ctx)
if !exists || err != nil { return fmt.Errorf("class %s not ready", className) } Try / catch
res, err := client.GraphQL().Get().WithClassName("Article").Do(ctx)
if err != nil {
if errors.Is(err, context.DeadlineExceeded) || isTransient(err) {
// retry with backoff; shard may be migrating
} else if isMissingIndex(err) {
// trigger reindex instead of retrying
}
} Prevention
- Monitor /v1/nodes shard health before heavy queries
- Retry transient storage errors with exponential backoff
- Trigger reindexing when property indexes are reported missing
When it happens
Trigger: VectorSearch underlying failure during Get{Class} — e.g. shard unavailable, corrupted LSM segment, internal index error, or an inverted index missing for the queried property (when not a MissingIndexError).
Common situations: Node restarts/shard migration mid-query; querying after a failed import left partial indexes; disk issues on a shard; querying a class while a reindex is in flight on another node.
Related errors
- index for target vector %q not found
- distance between entrypoint and query node
- get muvera vector for docID
- failed to create or get bucket
- failed to get bucket
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/f8d7c6005381acbb.
Report an issue: GitHub.