Ir al contenido

Motores de búsqueda

Guida ofrece dos integraciones de búsqueda distintas. Para indexación local limitada al espacio de trabajo y sin configuración, puede usar el índice Lucene.NET integrado. Para escala masiva e integración externa, puede conectarse directamente a clústeres Elasticsearch.


g.search.* proporciona un índice de búsqueda de texto completo limitado al espacio de trabajo y respaldado por Lucene.NET. No requiere configuración, se ejecuta íntegramente en local y persiste datos dentro de la carpeta del espacio de trabajo (.guida/search-index/).

Casos de uso:

  • Indexar texto extraído de cientos de páginas para recuperación rápida.
  • Construir bases de conocimiento locales para Retrieval-Augmented Generation (RAG) con LLM.
  • Encontrar elementos en cola o documentos almacenados mediante coincidencia aproximada.
async function main() {
// Index a document
g.search.index({
_key: "article-123",
_collection: "articles",
title: "Understanding Browser Automation",
body: "Guida is an agentic browser...",
url: "https://example.com/article"
});
// Query with standard Lucene syntax
// Supports wildcards, fuzzy matching (~), and field-specific queries
const results = g.search.query("title:Browser* OR body:automation~");
g.log(`Found ${results.length} matches:`);
for (const r of results) {
g.log(`- ${r.fields.title} (Score: ${r.score})`);
}
}

6 métodos en total; vea la Referencia de API para la lista completa.


g.elasticsearch.* se conecta a clústeres Elasticsearch para ingesta de alto rendimiento, gestión de índices y búsquedas Query DSL brutas.

A diferencia del índice Lucene local, Elasticsearch requiere un clúster externo, ejecutado localmente, vía Docker o en Elastic Cloud.

Formato de cadena de conexión (JSON):

Las conexiones se configuran de forma segura en el panel Secrets mediante el diálogo “Add Elasticsearch”. Por debajo, esto almacena una configuración JSON:

{
"url": "http://localhost:9200",
"username": "elastic",
"password": "password"
}

Casos de uso:

  • Extraer datasets masivos e ingerirlos con operaciones bulk de alto rendimiento.
  • Crear y gestionar índices programáticamente.
  • Buscar en grandes datasets usando Elasticsearch Query DSL bruto.
async function main() {
const conn = "my-elastic"; // Name of your connection secret
// Check connection
const isUp = await g.elasticsearch.ping(conn);
if (!isUp) return g.log("Connection failed");
// Bulk index documents with automatic chunking
const docs = [{ id: 1, title: "Laptop" }, { id: 2, title: "Mouse" }];
const bulkRes = await g.elasticsearch.bulk(conn, "products", docs, 1000);
g.log(`Indexed ${bulkRes.successful} out of ${bulkRes.total}`);
// Query DSL search
const searchRes = await g.elasticsearch.search(conn, "products", {
query: { match_all: {} }
});
g.log(`Total hits: ${searchRes.hits.total.value}`);
}

8 métodos en total; vea la Referencia de API para la lista completa.


Las conexiones a clústeres Elasticsearch externos siguen el mismo modelo de seguridad que las credenciales:

  • Los scripts originados por MCP están bloqueados. Cuando un agente de IA ejecuta un script mediante MCP, todas las llamadas g.elasticsearch.* devuelven un error. Esto impide que la IA acceda a bases de datos externas mediante automatización con scripts. Nota: el índice Lucene local g.search.* sí es accesible para MCP.
  • Los procesos de trabajo heredan el origen de su lanzador. Si MCP inicia un pool de procesos de trabajo, esos procesos también quedan bloqueados para acceso externo a Elasticsearch.
  • Los scripts iniciados por el usuario tienen acceso completo. Los scripts ejecutados con F5, disparadores de eventos y procesadores de cola pueden usar todos los métodos.

Las credenciales de conexión nunca se exponen mediante herramientas MCP: la IA solo ve el nombre de la credencial, no el usuario ni las contraseñas.