Volver a la arquitectura

Buscador

Motor de búsqueda

Permite a los clientes localizar productos de forma instantánea mediante palabras clave. Optimizado para velocidad: consultas sobre 10 000 productos en menos de 100 ms.

¿Qué es?

Un motor de búsqueda de texto completo (típicamente Elasticsearch o Solr). Indexa los productos —nombre, descripción, categoría— y resuelve las consultas en milisegundos, con un rendimiento muy superior al de un LIKE sobre PostgreSQL.

Funciones principales

Búsqueda de texto: GET /search?q=témpera → devuelve los productos coincidentes ordenados por relevancia.
Autocompletado: Sugiere productos a medida que el usuario escribe.
Filtros facetados: Tras la búsqueda, indica cuántos resultados hay por categoría, precio o marca.
Tolerancia a errores: Ante una errata como "tempera", recupera igualmente "témpera".
Sinónimos: Términos equivalentes devuelven el mismo conjunto de resultados; configurable.
Ajuste de relevancia: Los productos nuevos o destacados se priorizan aunque la coincidencia no sea exacta.

Limitaciones y restricciones

Latencia de indexación: Un producto nuevo en PostgreSQL tarda unos segundos en reflejarse en la búsqueda; no es instantáneo.
Sincronización: Si el motor se desconecta, el índice queda desactualizado y requiere reindexación.
Almacenamiento: El índice puede ocupar de 2 a 3 veces el tamaño de los datos originales.
Complejidad operativa: Un sistema adicional que mantener, monitorizar y diagnosticar; un punto de fallo más.
Curva de aprendizaje: Su lenguaje de consulta difiere de SQL y exige formación del equipo.

Propósito del componente

Ofrecer una búsqueda de productos rápida y flexible y mejorar la experiencia de usuario y, con ella, la conversión: una búsqueda deficiente frustra al cliente y reduce las ventas.

Stack tecnológico recomendado

Elasticsearch 8+ Kibana (monitoring) Logstash (indexer) Python elasticsearch-py Query DSL Analyzers (tokenizers)

Por qué: Elasticsearch es el estándar del sector para búsqueda. Kibana permite inspeccionar los índices. Logstash sincroniza los cambios desde PostgreSQL. El Query DSL habilita consultas avanzadas y los analizadores procesan correctamente el español.

Información técnica adicional

Particionamiento (sharding): El índice se distribuye entre varios nodos para procesar en paralelo, de forma automática.
Replicación: Cada fragmento dispone de una réplica; si un nodo cae, otra copia asume el trabajo.
Analizadores: Tokenización y lematización del español (lápices → lápiz); configurable.
Ranking: TF-IDF combinado con relevancia personalizada determina el orden de los resultados.
Reindexación: Ante un cambio de esquema, se reindexa sin interrupción del servicio mediante alias.

Métricas importantes

Latencia de búsqueda: P95 < 100 ms, P99 < 500 ms; si aumenta, revisar el índice.
Tamaño del índice: Vigilar su crecimiento; por encima de 50 GB, evaluar el particionamiento.
Tasa de consultas: Búsquedas por segundo; superados los 1000 QPS, puede requerir más nodos.
Frescura: Desfase entre el cambio en PostgreSQL y su aparición en la búsqueda; objetivo inferior a 1 segundo.
Precisión: Porcentaje de resultados relevantes; medir las sesiones con éxito frente a las fallidas.

Una búsqueda rápida convierte visitantes en compradores: cada mejora de latencia incide en la conversión. No obstante, un motor dedicado solo se justifica a partir de cierto volumen de catálogo (más de 1000 productos); para el piloto, pg_trgm dentro de PostgreSQL es suficiente y evita un componente adicional.