Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

MCP find_context and company_context return no results on Elasticsearch (OpenSearchVectorService singleton is null)

Aperta Adatta ai principianti
#36,463 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@zerafachris ci sta già lavorando.

Dal 29/10/2026.

  • #36517 di @zerafachris — aperta
  • #36548 di @MostafaAbdelsalam11 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
elasticsearch, java

Direzione di ricerca

Leggi AIContextFinder.java e CompanyContextTool.java nei punti di chiamata identificati nell’issue, quindi controlla SearchRepository.java per vedere come viene inizializzato il servizio vettoriale per Elasticsearch. L’issue propone di usare l’accessor VectorIndexService del repository, indipendente dal backend, in entrambi i punti di chiamata. Il lavoro è completato quando l’endpoint di contesto e gli strumenti MCP restituiscono risultati di ricerca vettoriale su Elasticsearch; l’issue riporta la risposta prevista quando non esistono knowledge pills.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug
Affected module

Search / Discovery

Describe the bug

With Elasticsearch as the search backend and semantic search enabled, the find_context and company_context MCP tools never return results, although embeddings exist and semantic_search works on the same index.

  • find_context (and GET /api/v1/ai/context/find) always returns an empty result: {"items":[],"candidateAssets":[],"empty":true}. No error, no log line.
  • company_context with a query returns "Semantic search is not enabled. Configure vector embeddings in the OpenMetadata server settings."

Root cause:
SearchRepository.initializeVectorSearchService() only creates OpenSearchVectorService when searchType is OpenSearch. On Elasticsearch it creates ElasticSearchVectorService and stores it in SearchRepository.vectorIndexService, so OpenSearchVectorService.getInstance() stays null. Two call sites still read that OpenSearch-only singleton:

  • AIContextFinder.searchKnowledge(): skips the search when the singleton is null, so the result is silently empty.
  • CompanyContextTool.runSearch(): returns the "not enabled" error when the singleton is null.
To Reproduce
  1. Run OpenMetadata with Elasticsearch as the search backend and semantic search enabled, for example:
    SEARCH_TYPE=elasticsearch
    SEMANTIC_SEARCH_ENABLED=true
    LLM_ENABLED=true
    LLM_PROVIDER=
    EMBEDDING_PROVIDER=
    LLM_OPENAI_API_KEY=
  2. Make sure some entities are embedded. Any approved glossary term is enough; embeddings are written when an entity is created or reindexed. The server log should show
    "ElasticSearchVectorService initialized" and "Vector search service initialized".
  3. Search for a term that exists in the catalog, for example "bounce rate", through each of these:
    • GET /api/v1/ai/context/find?q=bounce rate
    • MCP find_context
    • MCP company_context (with a query)
    • MCP semantic_search (for comparison)

The same behaviour occurs on OpenMetadata 2.0.2, 2.0.6, 2.0.7 and 2.1.0-rc1

Call Result
GET /api/v1/ai/context/find {"items":[],"candidateAssets":[],"empty":true}
MCP find_context "No company knowledge found for this query."
MCP company_context "Semantic search is not enabled. Configure vector embeddings ..."
MCP semantic_search returns the matching entities with scores
Expected behavior

find_context returns the matching glossary terms, metrics and pages (plus candidate assets), and company_context runs its vector query, on Elasticsearch exactly as on OpenSearch. With the fix below, find_context returns the 4 items listed above and company_context returns {"returnedCount":0,"results":[]} (no knowledge pills exist) instead of the error.

OS

Linux (Docker containers on macOS)

Python version

No response

OpenMetadata version

2.0.2 (stock image); same code in 2.0.6, 2.0.7, 2.1.0-rc1

OpenMetadata Ingestion package version

No response

Additional context

Code on main:

Proposed fix (verified): both call sites only use methods declared on VectorIndexService (including the 8-argument search with SubjectContext), so they can read the backend-neutral accessor:

  • OpenSearchVectorService service = OpenSearchVectorService.getInstance();
  • VectorIndexService service = Entity.getSearchRepository().getVectorIndexService();
Pre-submission checklist
  • I searched for duplicate issues.
  • I removed credentials, hostnames, emails, and other sensitive data from logs and config.
Lingua principale
TypeScript
Stelle
15.4k
Fork
2.4k
Merge medio
1g 1h
PR unite (30g)
699

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di open-metadata/OpenMetadata

Tutte le issue di open-metadata/OpenMetadata

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.