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.
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.