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

  1. Inspect the wrapped cause with errors.As / check server logs for the root error from searcher.Search
  2. If a property index is missing, trigger reindexing or wait for async indexing to complete
  3. Retry after shard migration/node recovery completes
  4. 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

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


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/f8d7c6005381acbb. Report an issue: GitHub.