Magento

Como reindexar índices en Magento 1 y 2 con SSH

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

 

Dependiendo de la versión PHP de tu shell quizás necesites usar:

php5 indexer.phpreindexall

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

1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Califica este artículo)
Cargando…

Dejar un comentario

Clientes

¿Hablamos?

Una vez que has llegado aquí ¿tienes alguna duda? Déjame tus datos de contacto y te llamaré en el primer hueco que encuentre.

Contactar