Cuando tienes un catálogo grande o los recursos de tus servidor son limitados, seguramente, habrás experimentado problemas a la hora de reindexar manualmente el catálogo de Magento desde Sistem->Index Management.
¿Qué son los índices?
Los índices son una forma que tiene Magento para trabajar con la ingente cantidad de datos y tablas que posee (productos, categorías, precios, clientes, tiendas , etc.). Magento usa una estructura de tipo Entity-Attribute-Value (EAV) que requiere generalmente de consultas pesadas y complejas para obtener datos simples. Por ello se han creado unas tablas índices especiales donde genera y guarda datos en tablas simples que permiten consultas más ágiles y con menos recursos que tratar con decenas de tablas para obtener el mismo resultado.
Por ejemplo el cambio de precio de un producto o de su URL requiere que Magento debe reindexar el índice de precios o URLs para que este nuevo valor sea visualizado en el frontend. Sin los índices, el sistema tendría que calcular el precio de cada producto “en real”, teniendo en cuenta reglas descuento, descuentos por cliente, por cantidad, monedas. Vamos, que te podrías a tomar un café. Los índices son esenciales para Magento.
La parte mala de los índices es que, con grandes catálogos, el reindexado desde admin no es viable en términos de tiempo y performance.
Una buena alternativa es reindexar desde la línea de comandos o shell. Es recomendable seguir este proceso y, no manualmente desde el admin, ya que tiene menor impacto en los recursos y performance del servidor. Para ello puedes usar el programa Putty.
Magento provee de una fichero denominado indexer.php dentro del directorio /shell de nuestro proyecto que permite el reindexado desde shell.
Una vez identificado en el servidor por ssh mediante putty nos dirigiremos al directorio shell dentro de nuestro proyecto.
También es recomendable indexar solo los índices necesarios, no todos. Así no se sobrecargará, sin necesidad, el servidor.
Ejecutando
php indexer.php –info
podrás ver la lista de índices y a que entidad afecta:
catalog_product_attribute Product Attributes
catalog_product_price Product Prices
catalog_url Catalog Url Rewrites
catalog_product_flat Product Flat Data
catalog_category_flat Category Flat Data
catalog_category_product Category Products
catalogsearch_fulltext Catalog Search Index
cataloginventory_stock Stock status
Por lo tanto la instrucción a ejecutar, siguiendo el mismo orden anterior, serían las siguientes
php indexer.php –reindex catalog_product_attribute
php indexer.php –reindex catalog_product_price
php indexer.php –reindex catalog_url
php indexer.php –reindex catalog_product_flat
php indexer.php –reindex catalog_category_flat
php indexer.php –reindex catalog_category_product
php indexer.php –reindex catalogsearch_fulltext
php indexer.php –reindex cataloginventory_stock
Si por el contrario queremos ejecutar todos los índices de una vez sería:
php indexer.php —reindexall
Dependiendo de la versión PHP de tu shell quizás necesites usar:
php5 indexer.php —reindexall
Y si te encuentras con problemas de memoria:
Fatal error: Allowed memory size of XXXX bytes exhausted (tried to allocate YYY bytes)
necesitarás incrementar la memoria con la siguiente instrucción al inicio del script.
ini_set(‘memory_limit’, ‘512M’);
Magento 2
Para Magento 2 los índices que tenemos son:
php bin/magento indexer:info
- design_config_grid Design Config Grid
- customer_grid Customer Grid
- catalog_category_product Category Products
- catalog_product_category Product Categories
- catalog_product_price Product Price
- catalog_product_attribute Product EAV
- catalogsearch_fulltext Catalog Search
- cataloginventory_stock Stock
- catalogrule_rule Catalog Rule Product
- catalogrule_product Catalog Product Rule
Para reindexar todos los índices
php bin/magento indexer:reindex
Para reindexar por ejemplo catalog_product_category:
php bin/magento indexer:reindex catalog_product_category
Más posts relacionados
Involucrado en ecommerce desde 2010. Freelance especializado en tiendas online Magento y Shopify. Desde consultoría y programación hasta posicionamiento en buscadores junto a CRO.
Mi experiencia y pasión por el desarrollo y marketing online me hacen una fuente confiable para las empresas que buscan optimizar sus tiendas en línea y alcanzar sus objetivos.