Re-indexing Magento through the command line

From time to time, you might find the need to re-index Magento via the command line. This could be for a whole host of reasons, for example, if the indexer is timing out or not finishing through the web interface.

Magento includes an indexing script and you can find it in the shell folder.

From here, you have a number of commands at your disposal.

Checking for the status of all indexes


php indexer.php --status

Should give you output like this:

Re-indexing a single index

Each index has its own index key that you can use to reference it when asking Magento to re-index. To get these keys, you can use the following command:

php indexer.php --info

Giving you:

To reindex a single index, run the following command.

php indexer.php --reindex [Index Option Code]

This can be comma delimited for multiple indices:

php indexer.php --reindex catalog_product_price,catalog_url,catalog_product_flat

Re-index all indices

The following code will loop through each index and re-index it.

php indexer.php --reindexall

By Douglas Radburn. at 3:50PM on Thursday, 05 Dec 2013

Doug is our Senior Open Source Web Developer since bringing his knowledge and skills to Branded3 in 2009. A founding developer of our Twitition and Competwition platforms, Doug has also been lead in our Open Source Projects on Magento ecommerce solutions and Wordpress CMS platforms. Follow Douglas Radburn on Twitter.

comments

2 Responses to “Re-indexing Magento through the command line”

  1. thanks, good post, it happends to me that after an upgrade from 1.5 to 1.7 it was just imposible to reindex, this is a good solution I was not aware of

  2. Joe Harman says:

    We are running our Magento webservers on AWS. Magento is running a multisite setup.

    Load Balancer Connected to 4 Apache Webservers, 1 MySQL database running Percona MySQL

    When using php indexer.php –reindexall and monitoring the incoming queries to MySQL I noticed that my queries were originating from all 4 of the webservers, even though I only started the indexing process on 1 of the webservers.

    Do you know how isolate the indexing process to only the server it is initiated on? Have you found any performance differences in running these as comma delimited (php indexer.php –reindex catalog_product_price,catalog_url,catalog_product_flat)?

Leave a Reply