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.