Cómo enfocar Elasticsearch en catálogos eCommerce grandes
Guía práctica para diseñar mappings, estrategias de indexación y relevancia en catálogos con cientos de miles de SKUs.
El problema con Elasticsearch en catálogos grandes
Elasticsearch es una herramienta poderosa, pero muchas implementaciones en eCommerce acaban con problemas de rendimiento, relevancia inconsistente y procesos de indexación frágiles.
El problema no suele ser Elasticsearch en sí mismo. El problema es cómo está configurado y cómo se alimenta de datos.
Los errores más comunes
Antes de hablar de soluciones, hay que entender qué sale mal:
- Mappings genéricos: Usar el mapping por defecto de Elasticsearch para todos los campos sin pensar en cómo se van a usar.
- Indexación masiva sincrónica: Reindexar el catálogo completo cada vez que cambia algo.
- Datos sucios en el índice: Normalizar datos solo a nivel de base de datos, no antes de indexar.
- Falta de análisis de consultas reales: Optimizar sin mirar qué buscan realmente los usuarios.
Mappings pensados para el negocio
El primer paso es diseñar los mappings según cómo se usan los datos:
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "standard",
"fields": {
"keyword": { "type": "keyword" },
"suggest": { "type": "completion" }
}
},
"brand": {
"type": "keyword"
},
"price": {
"type": "scaled_float",
"scaling_factor": 100
},
"stock": {
"type": "integer"
}
}
}
}
Indexación incremental
En lugar de reindexar todo el catálogo, implementar actualizaciones incrementales:
- Detectar qué productos han cambiado desde la última indexación.
- Actualizar solo esos documentos en Elasticsearch.
- Usar versioning para evitar actualizaciones obsoletas.
Normalización de datos antes de indexar
Los datos que entran en Elasticsearch deben estar limpios y normalizados:
- Nombres en minúsculas y sin acentos para búsquedas insensibles.
- Atributos con valores controlados (no “Rojo”, “rojo”, “ROJO” para el mismo valor).
- Textos vacíos o nulos manejados explícitamente.
Relevancia
La relevancia en un catálogo de producto es un equilibrio entre:
- Coincidencia exacta del término buscado.
- Popularidad del producto.
- Stock disponible.
- Categoría y contexto del usuario.
Un buen punto de partida es usar function_score para combinar relevancia textual con señales de negocio.
Conclusión
Elasticsearch bien configurado puede transformar la búsqueda de un eCommerce. El trabajo no está en la herramienta, está en entender los datos, los patrones de búsqueda y las necesidades del negocio.