Manage the indexers
To view a list of all indexers:
bin/magento indexer:info
The list displays as follows:
design_config_grid Design Config Grid
customer_grid Customer Grid
catalog_category_product Category Products
catalog_product_category Product Categories
catalogrule_rule Catalog Rule Product
catalog_product_attribute Product EAV
inventory Inventory
catalogrule_product Catalog Product Rule
cataloginventory_stock Stock
targetrule_product_rule Product/Target Rule
targetrule_rule_product Target Rule/Product
catalog_product_price Product Price
catalogsearch_fulltext Catalog Search
salesrule_rule Sales Rule
View indexer status
Use this command to view the status of all indexers or specific indexers. For example, find out if an indexer needs to be reindexed.
Command options:
bin/magento indexer:status [indexer]
Where [indexer]
is a space-separated list of indexers. Omit [indexer]
to view the status of all indexers.
Sample result:
+----------------------+------------------+-----------+---------------------+---------------------+
| Title | Status | Update On | Schedule Status | Schedule Updated |
+----------------------+------------------+-----------+---------------------+---------------------+
| Catalog Product Rule | Reindex required | Save | | |
| Catalog Rule Product | Reindex required | Save | | |
| Catalog Search | Ready | Save | | |
| Category Products | Reindex required | Schedule | idle (0 in backlog) | 2021-06-28 09:45:53 |
| Customer Grid | Ready | Schedule | idle (0 in backlog) | 2021-06-28 09:45:52 |
| Design Config Grid | Ready | Schedule | idle (0 in backlog) | 2018-06-28 09:45:52 |
| Inventory | Ready | Save | | |
| Product Categories | Reindex required | Schedule | idle (0 in backlog) | 2021-06-28 09:45:53 |
| Product EAV | Reindex required | Save | | |
| Product Price | Reindex required | Save | | |
| Stock | Reindex required | Save | | |
+----------------------+------------------+-----------+---------------------+---------------------+
Reindex
Use this command to reindex all or selected indexers one time only.
Command options:
bin/magento indexer:reindex [indexer]
Where [indexer]
is a space-separated list of indexers. Omit [indexer]
to reindex all indexers.
Sample result:
Design Config Grid index has been rebuilt successfully in <time>
Customer Grid index has been rebuilt successfully in <time>
Category Products index has been rebuilt successfully in <time>
Product Categories index has been rebuilt successfully in <time>
Catalog Rule Product index has been rebuilt successfully in <time>
Product EAV index has been rebuilt successfully in <time>
Inventory index has been rebuilt successfully in <time>
Catalog Product Rule index has been rebuilt successfully in <time>
Stock index has been rebuilt successfully in <time>
Product Price index has been rebuilt successfully in <time>
Catalog Search index has been rebuilt successfully in <time>
Reindexing in parallel mode
Before you can run indexers in parallel mode, you must enable Process Control support (pcntl
) in PHP. See in the PHP documentation.
Indexers are scoped and multi-threaded to support reindexing in parallel mode. It parallelizes by the indexer’s dimension and executes across multiple threads, reducing processing time.
In this context, dimension
is the scope of the reindexing, for instance a website
or just a specific customer_group
.
Index parallelization affects scoped indexers only, which means Commerce splits the data into multiple tables using the indexer as its scope instead of keeping all data in one table.
You can run the following indexes in parallel mode:
Catalog Search Fulltext
can be paralleled by store views.Category Product
can be paralleled by store views.Catalog Price
can be paralleled by website and customer groups.Catalog Permissions
can be paralleled by customer groups.
To use parallelization, set one of the available dimensions modes for the product price indexer:
none
(default)website
customer_group
website_and_customer_group
For example, to set the mode per website:
bin/magento indexer:set-dimensions-mode catalog_product_price website
To use parallelization for Catalog permissions, set one of the available dimensions modes for the Catalog Permissions indexer:
none
(default)customer_group
Or to check the current mode:
bin/magento indexer:show-dimensions-mode
To reindex in parallel mode, run the reindex command using the environment variable MAGE_INDEXER_THREADS_COUNT
, or add an environment variable to the env.php
file. This variable sets the number of threads for the reindex processing.
For example, the following command runs the Catalog Search Fulltext
indexer across three threads:
MAGE_INDEXER_THREADS_COUNT=3 php -f bin/magento indexer:reindex catalogsearch_fulltext
Reset indexer
Use this command to invalidate the status of all indexers or specific indexers.
Command options:
bin/magento indexer:reset [indexer]
Where [indexer]
is a space-separated list of indexers. Omit [indexer]
to invalidate all indexers.
Sample result:
Design Config Grid indexer has been invalidated.
Customer Grid indexer has been invalidated.
Category Products indexer has been invalidated.
Product Categories indexer has been invalidated.
Catalog Rule Product indexer has been invalidated.
Product EAV indexer has been invalidated.
Inventory indexer has been invalidated.
Catalog Product Rule indexer has been invalidated.
Stock indexer has been invalidated.
Product Price indexer has been invalidated.
Catalog Search indexer has been invalidated.
Configure indexers
Use this command to set the following indexer options:
- Update on save (
realtime
): Indexed data is updated when a change is made in the Admin. (For example, the category products index is reindex after products are added to a category in the Admin.) - Update by schedule (
schedule
): Data is indexed according to the schedule set by your cron job.
.
Display the current configuration
To view the current indexer configuration:
bin/magento indexer:show-mode [indexer]
Where [indexer]
is a space-separated list of indexers. Omit [indexer]
to show all indexers’ modes. For example, to show the mode of all indexers:
Sample result:
Design Config Grid: Update on Save
Customer Grid: Update on Save
Category Products: Update on Save
Product Categories: Update on Save
Catalog Rule Product: Update on Save
Product EAV: Update on Save
Inventory: Update on Save
Catalog Product Rule: Update on Save
Stock: Update on Save
Product Price: Update on Save
Catalog Search: Update on Save
Set the indexer mode
realtime
instead of schedule
. The Customer Grid can only be reindexed using the Update on Save option. This index does not support the Update by Schedule
option. Use the following command line to set this indexer to update on save: php bin/magento indexer:set-mode realtime customer_grid
To specify the indexer configuration:
bin/magento indexer:set-mode {realtime|schedule} [indexer]
Where:
realtime
—Sets the selected indexers to update on save.schedule
—Sets the specified indexers to save according to the cron schedule.indexer
—Is a space-separated list of indexers. Omitindexer
to configure all indexers the same way.
For example, to change only the category products and product categories indexers to update on schedule, enter:
bin/magento indexer:set-mode schedule catalog_category_product catalog_product_category
Sample result:
Index mode for Indexer Category Products was changed from 'Update on Save' to 'Update by Schedule'
Index mode for Indexer Product Categories was changed from 'Update on Save' to 'Update by Schedule'
The indexers-related database triggers are added when the indexer mode is set to schedule
and removed when the indexer mode is set to realtime
. If the triggers are missing from your database while the indexers are set to schedule
, change the indexers to realtime
and then change them back to schedule
. This resets the triggers.
Set indexer status
The bin/magento indexer:set-status
command was introduced in ÃÛ¶¹ÊÓƵ Commerce 2.4.7. It allows administrators to modify the operational status of one or more indexers, optimizing system performance during extensive operations like data imports, updates, or maintenance.
Command syntax:
bin/magento indexer:set-status {invalid|suspended|valid} [indexer]
Where:
invalid
—Marks indexers as out-of-date, prompting reindexing on the next cron run unless they are suspended.suspended
—Temporarily stops automatic cron-triggered updates for indexers. This status applies to both real-time and schedule modes, ensuring that automatic updates are paused during intensive operations.valid
—Indicates that indexer data is up-to-date, with no need for reindexing.indexer
—Is a space-separated list of indexers. Omitindexer
to configure all indexers the same way.
For example, to suspend specific indexers, enter:
bin/magento indexer:set-status suspended catalog_category_product catalog_product_category
Sample result:
Index status for Indexer 'Category Products' was changed from 'valid' to 'suspended'.
Index status for Indexer 'Product Categories' was changed from 'valid' to 'suspended'.
Managing suspended indexer status
When an indexer is set to a suspended
status, it primarily affects automatic reindexing and materialized view updates. Here’s a brief overview:
Reindexing Skipped: Automatic reindexing is bypassed for suspended
indexers and any indexers sharing the same shared_index
. This ensures system resources are conserved by not reindexing data related to suspended processes.
Materialized View Updates Skipped: Similar to reindexing, updates to materialized views related to suspended
indexers or their shared indexes are also paused. This action further reduces system load during suspension periods.
indexer:reindex
command reindexes all indexers, including those marked as suspended
, making it useful for manual updates when automatic ones are paused.valid
from suspended
or invalid
requires caution. This action can lead to performance degradation if there’s accumulated unindexed data.valid
to maintain system performance and data integrity.