管理索引子
若要檢視所有索引子的清單:
bin/magento indexer:info
清單顯示如下:
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
檢視索引器狀態
使用此指令可檢視所有索引器或特定索引器的狀態。 例如,瞭解索引器是否需要重新索引。
命令選項:
bin/magento indexer:status [indexer]
其中[indexer]
是以空格分隔的索引子清單。 省略[indexer]
以檢視所有索引子的狀態。
範例結果:
+----------------------+------------------+-----------+---------------------+---------------------+
| 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 | | |
+----------------------+------------------+-----------+---------------------+---------------------+
重新索引
使用此指令可只重新索引一次所有或選取的索引子。
命令選項:
bin/magento indexer:reindex [indexer]
其中[indexer]
是以空格分隔的索引子清單。 省略[indexer]
以重新索引所有索引子。
範例結果:
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>
以平行模式重新索引
您必須先在PHP中啟用「程式控制」支援(pcntl
),才能以平行模式執行索引器。 請參閱PHP檔案中的安裝。
索引器具有範圍和多執行緒,以支援在平行模式中重新索引。 它透過索引器的維度來平行處理,並在多個執行緒上執行,以減少處理時間。
在此內容中,dimension
是重新索引的範圍,例如執行個體website
或只是特定customer_group
。
索引平行化只會影響範圍的索引子,這表示Commerce會使用索引子做為範圍將資料分割成多個表格,而非將所有資料儲存在單一表格中。
您可以在平行模式下執行下列索引:
Catalog Search Fulltext
可透過存放區檢視並行。Category Product
可透過存放區檢視並行。Catalog Price
可由網站和客戶群組並行。Catalog Permissions
可由客戶群組並行。
若要使用平行化,請針對產品價格索引器設定其中一個可用的維度模式:
none
(預設)website
customer_group
website_and_customer_group
例如,若要為每個網站設定模式:
bin/magento indexer:set-dimensions-mode catalog_product_price website
若要對目錄許可權使用平行化,請為目錄許可權索引器設定其中一個可用的維度模式:
none
(預設)customer_group
或檢查目前模式:
bin/magento indexer:show-dimensions-mode
若要以平行模式重新索引,請使用環境變數MAGE_INDEXER_THREADS_COUNT
執行重新索引命令,或將環境變數新增到env.php
檔案。 此變數會設定重新索引處理的執行緒數目。
例如,下列命令會在三個執行緒上執行Catalog Search Fulltext
索引器:
MAGE_INDEXER_THREADS_COUNT=3 php -f bin/magento indexer:reindex catalogsearch_fulltext
重設索引子
使用此命令可讓所有索引器或特定索引器的狀態失效。
命令選項:
bin/magento indexer:reset [indexer]
其中[indexer]
是以空格分隔的索引子清單。 省略[indexer]
以讓所有索引子失效。
範例結果:
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.
設定索引子
使用此指令來設定下列索引器選項:
- 儲存時更新(
realtime
):在管理員中進行變更時,索引資料會更新。 (例如,將產品新增至管理員中的類別後,類別產品索引會重新索引。) - 依排程更新(
schedule
):資料已根據cron工作設定的排程編制索引。
顯示目前的設定
若要檢視目前的索引器組態:
bin/magento indexer:show-mode [indexer]
其中[indexer]
是以空格分隔的索引子清單。 省略[indexer]
以顯示所有索引子模式。 例如,若要顯示所有索引子的模式:
範例結果:
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
設定索引器模式
realtime
設定Customer Grid,而非schedule
。 只能使用Update on Save選項來重新索引Customer Grid。 此索引不支援Update by Schedule
選項。 使用以下命令列,設定此索引器在儲存時更新: php bin/magento indexer:set-mode realtime customer_grid
若要指定索引器組態:
bin/magento indexer:set-mode {realtime|schedule} [indexer]
其中:
realtime
— 將選取的索引子設定為在儲存時更新。schedule
— 設定要根據cron排程儲存的指定索引子。indexer
— 是以空格分隔的索引子清單。 省略indexer
以相同方式設定所有索引子。
例如,若要只變更類別產品和產品類別索引器,以依排程更新,請輸入:
bin/magento indexer:set-mode schedule catalog_category_product catalog_product_category
範例結果:
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'
當索引器模式設定為schedule
時,會新增與索引器相關的資料庫觸發程式,而當索引器模式設定為realtime
時,則會移除這些觸發程式。 如果索引子設為schedule
時資料庫中缺少觸發程式,請將索引子變更為realtime
,然後再變更回schedule
。 這會重設觸發程式。
設定索引子狀態
已在Adobe Commerce 2.4.7中引入bin/magento indexer:set-status
命令。它可讓管理員修改一或多個索引器的運作狀態,在資料匯入、更新或維護等大量作業期間最佳化系統效能。
命令語法:
bin/magento indexer:set-status {invalid|suspended|valid} [indexer]
其中:
invalid
— 將索引器標籤為過期,在下次cron執行時提示重新索引,除非它們被暫停。suspended
— 暫時停止索引器的自動cron觸發更新。 此狀態同時適用於即時和排程模式,確保在密集作業期間暫停自動更新。valid
— 表示索引器資料是最新的,不需要重新索引。indexer
— 是以空格分隔的索引子清單。 省略indexer
以相同方式設定所有索引子。
例如,若要暫停特定索引子,請輸入:
bin/magento indexer:set-status suspended catalog_category_product catalog_product_category
範例結果:
Index status for Indexer 'Category Products' was changed from 'valid' to 'suspended'.
Index status for Indexer 'Product Categories' was changed from 'valid' to 'suspended'.
管理暫停的索引器狀態
當索引子設定為suspended
狀態時,它主要影響自動重新索引和具體化視觀表更新。 以下是簡短概述:
已略過重新索引:已略過suspended
個索引子及任何共用相同shared_index
的索引子的自動重新索引。 這樣可確保不會重新索引與已暫停處理序相關的資料,以節省系統資源。
已略過具體化視觀表更新:與重新索引類似,也會暫停與suspended
索引子或其共用索引相關的具體化視觀表更新。 此動作會進一步減少暫停期間的系統負載。
indexer:reindex
命令會重新索引所有索引子,包括標示為suspended
的索引子,以便在自動索引子暫停時手動更新。suspended
或invalid
變更為valid
需要謹慎。 如果有累積的未索引資料,此動作可能會導致效能降低。valid
以維持系統效能和資料完整性之前,請務必確保所有資料都正確編制索引。