Santiant
Elasticsearch eCommerce Backend Búsqueda

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.

S
Santiago Moreno Arce
·

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:

  1. Detectar qué productos han cambiado desde la última indexación.
  2. Actualizar solo esos documentos en Elasticsearch.
  3. 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.