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:

Product Attributes:            Pending
Product Prices:                Pending
Stock Status:                  Pending
Tag Aggregation Data:          Pending
Default Values:                Pending
Catalog URL Rewrites:          Pending
Product Flat Data:             Require Reindex
Category Flat Data:            Pending
Category Products:             Pending
Catalog Search Index:          Pending

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:

catalog_product_attribute     Product Attributes
catalog_product_price         Product Prices
cataloginventory_stock        Stock Status
tag_summary                   Tag Aggregation Data
mana_db_replicator            Default Values
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

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. Having gained some informative insight and technical experience at two major digital agencies after graduating; Doug brought his knowledge and skills to Branded3 in 2009, and has been solving our development dilemmas ever since. Follow Douglas Radburn on Twitter.

comments

  • http://www.paginasweb.pe Diseño Paginas Web

    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

  • Joe Harman

    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)?