In Magento 2 l’errore Exception #0 (LogicException): catalog_product index does not exist yet. Make sure everything is reindexed
si riferisce al fatto che il catalogo dei prodotti non è stato indicizzato. Questo problema si presenta frequentemente quando si usano altri motori per la gestione del catalogo, come ad esempio ElasticSearch (specialmente con il plugin di Smile-SA, ma non solo).
Per risolvere il problema lanciamo nuovamente l’indicizzazione del catalogo ed aggiorniamo il tutto, procedendo nel modo seguente da riga di commando.
ATTENZIONE: In teoria l’unico comando utile e necessario è il seguente:
1 |
php -d memory_limit=5G bin/magento indexer:reindex catalogsearch_fulltext |
Se dovessero sorgere problemi o non esserci risultati, procedere nella maniera descritta di seguito.
Se non lo abbiamo procuriamoci n98-magerun2.
Scarichiamolo nella cartella di installazione di Magento, poi rendiamolo eseguibile, eseguendo i seguenti comandi:
1 2 |
wget https://files.magerun.net/n98-magerun2.phar chmod +x ./n98-magerun2.phar |
A questo punto eseguiamo la richiesta di reindicizzazione:
1 |
n98-magerun2 index:reindex |
Eseguiamola anche sul fulltext
:
1 |
php -d memory_limit=5G bin/magento indexer:reindex catalogsearch_fulltext |
Faccio notare che sto concedendo al PHP 5G di memoria per poter portare a termine, senza errori, il processo.
Qualora dovessero sorgere errori nel processo di indicizzazione, come per esempio Catalog Search index is locked by another reindex process. Skipping.
, procediamo nel modo seguente, altrimenti andiamo alla pulizia della cache.
Individuiamo i processi attivi con:
1 |
php bin/magento indexer:info |
Reimpostiamo il processo che ci interessa con:
1 |
php bin/magento indexer:reset <nome_processo> |
Nel dubbi possiamo reimpostarli tutti eseguendo i seguenti comandi:
1 2 3 4 5 6 7 8 9 10 |
php bin/magento indexer:reset design_config_grid; php bin/magento indexer:reset customer_grid; php bin/magento indexer:reset catalog_category_product; php bin/magento indexer:reset catalog_product_category; php bin/magento indexer:reset catalogrule_rule; php bin/magento indexer:reset catalog_product_attribute; php bin/magento indexer:reset cataloginventory_stock; php bin/magento indexer:reset catalog_product_price; php bin/magento indexer:reset catalogrule_product; php bin/magento indexer:reset catalogsearch_fulltext; |
A questo punto possiamo rilanciare il processo che ci interessa.
Puliamo tutta la cache:
1 2 3 4 |
php -f bin/magento cache:flush n98-magerun2 cache:clean n98-magerun2 cache:flush rm -rf var/cache/* var/generation/* var/session/sess_* var/view_preprocessed/* pub/static/* var/di/* var/page_cache/* |
La cache di Magento è una delle cose più problematiche, per cui conviene eseguire anche comandi superflui per ripetere l’operazione per sicurezza.
Detto questo riavviamo apache e il servizio di elastisearch, se lo abbiamo installato:
1 2 |
sudo systemctl restart httpd.service sudo systemctl restart elasticsearch.service |
A questo punto dovrebbe essere tornato tutto normale.