Переіндексація Magento 2: все, що вам потрібно знати

Magento оперує величезними обсягами інформації, пов’язаної з категоріями, продуктами, цінами, результатами пошуку тощо. Як ви знаєте, вся ця інформація організована в окремих таблицях, щоб необхідні дані можна було швидко отримати.

Саме тоді на допомогу приходить реіндексація Magento 2. Це важливий процес, який підтримує актуальність усіх даних і допомагає ефективно керувати вашим магазином як на фронтенді, так і на сервері. Таким чином, чим більше ви знаєте про переіндексація в Magento , тим краще.

У цьому посібнику ви дізнаєтеся, що таке реіндексація Magento, як її запустити, як виправити помилки, пов’язані з реіндексацією, якщо такі є, та багато іншого. Отже, перейдемо до суті.

Що таке реіндексація Magento 2?

Magento 2 використовує індексатори для впорядкування всіх даних, з якими він працює. Кожен тип даних має свій індексатор, який, у свою чергу, відповідає за відповідну індексну таблицю.

Тому існують окремі індексні таблиці для цін, пошукових термінів та продуктів, серед іншого. Таким чином, коли запит надсилається, Magento отримує дані з цих окремих таблиць, а не з головної таблиці.

Щоразу, коли ви вносите будь-які зміни під час роботи вашого магазину, дані у відповідних таблицях необхідно оновлювати. Для цього вам потрібно переіндексувати ваш Magento 2. Отже, переіндексація – це процес оновлення інформації в індексних таблицях, щоб вона була актуальною та релевантною.

Якщо ви підтримуєте релевантність даних вашого магазину, ви не тільки покращуєте процеси роботи магазину, але й взаємодію з клієнтами. Таким чином, ваші клієнти завжди матимуть актуальну інформацію щодо цін, знижок, наявності товарів та інших деталей каталогу.

Все це підводить нас до питання: як переіндексувати Magento 2? Давайте дізнаємося!

Як переіндексувати Magento 2?

Переіндексація Magento 2 запускається автоматично та запускається внесеними змінами. Однак у деяких випадках вам може знадобитися переіндексувати Magento вручну.

Існує два способи переіндексувати ваш Magento. По-перше, ви можете зробити це через CLI. Або ж ви можете запустити переіндексацію в адміністративній панелі.

Давайте розглянемо кожен із цих методів.

Переіндексація Magento через CLI

Для початку ви можете переіндексуйте свій Magento 2 через командний рядок . Щоб це зробити, перейдіть до кореневої папки Magento та виконайте таку команду:

php bin/magento indexer:reindex

Ви отримаєте відповідний результат:

Design Config Grid index has been rebuilt successfully in 00:00:00
Customer Grid index has been rebuilt successfully in 00:00:00
Category Products index has been rebuilt successfully in 00:00:01
Product Categories index has been rebuilt successfully in 00:00:00
Catalog Rule Product index has been rebuilt successfully in 00:00:01
Product EAV index has been rebuilt successfully in 00:00:02
Stock index has been rebuilt successfully in 00:00:00
Product Price index has been rebuilt successfully in 00:00:01
Catalog Product Rule index has been rebuilt successfully in 00:00:00
Catalog Search index has been rebuilt successfully in 00:00:02

Якщо є якісь конкретні типи індексів, які потрібно переіндексувати, вкажіть їхні назви у наведеній вище команді:

php bin/magento indexer:reindex [index_type]

Замість [index_type] ви можете використовувати наступне:

Design Config Grid

design_config_grid

Customer Grid

customer_grid

Category Products

catalog_category_product

Product Category

catalog_product_category

Catalog Rule Product

catalogrule_rule

Product EAV

catalog_product_attribute

Inventory

inventory

Правило продукту в каталозі

catalogrule_product

Запас

cataloginventory_stock

Правило продукту/цілі

targetrule_product_rule

Цільове правило/продукт

targetrule_rule_product

Ціна продукту

catalog_product_price

Пошук у каталозі

catalogsearch_fulltext

Правило продажів

salesrule_rule

Переіндексація Magento через панель адміністратора

За замовчуванням ви не можете ініціювати переіндексацію в панелі адміністратора. Ви можете змінити Режим індексації. Щоб зробити це, перейдіть до Система > Керування індексами, виберіть потрібні індексатори, виберіть Режим з випадаючого списку Дія та натисніть кнопку Надіслати

Отже, знову ж таки, ви не переіндексуєте Magento 2 з панелі адміністратора. Ви лише змінюєте режим індексатора. Потім переіндексація відбувається відповідно до вибраного режиму.

 Режими індексатора Magento

Однак, якщо у вас є Розширення командного рядка Magento 2 , ви можете виконати команду переіндексації безпосередньо з панелі адміністратора. Перегляньте наступне відео, щоб побачити, як це працює.

Режими переіндексації Magento 2

У Magento є два режими індексації — Оновлення при збереженні та Оновлення за розкладом. Перший оновлює індекси одразу після зміни даних, тоді як другий оновлює індекси за крон .

Рекомендується використовувати режим Оновлення за розкладом , оскільки негайна переіндексація при кожному збереженні може уповільнити ваш веб-сайт. Це стосується великих магазинів та великих обсягів оновлень.

Однак є виняток. Індекс Customer Grid (customer_grid) не підтримує режим переіндексації Оновлення за розкладом . Працює лише в режимі Оновлення при збереженні .

Команди переіндексації Magento 2

Magento 2 пропонує деякі інші команди для ефективного управління переіндексацією. Давайте розглянемо список найпоширеніших команд переіндексації та визначимо, що робить кожна з них.

Команда

Опис

php bin/magento indexer:reindex

Ініціює переіндексацію всіх індексаторів

php bin/magento indexer:reindex [index_type]

Переіндексує певний тип індексу

php bin/magento indexer:info

Показує список усіх доступних індексаторів

php bin/magento indexer:status

Показує стан індексаторів

php bin/magento indexer:show-mode

Показує режим індексаторів

php bin/magento indexer:set-mode

Встановлює режим індексатора

php bin/magento indexer:reset

Встановлює стан індексатора на Недійсний


Поширені проблеми, пов'язані з переіндексацією Magento 2

Якою б корисною не була переіндексація Magento 2, завжди існує ризик того, що щось піде не так у цьому процесі. Найкращий спосіб вирішити ці невідповідності – знати про них заздалегідь.

Давайте розглянемо деякі поширені проблеми, пов'язані з переіндексацією, щоб дізнатися, як їх виправити.

"Індекс заблоковано іншим процесом переіндексації. Пропускається"

Як випливає з повідомлення про помилку, ця помилка з'являється, коли певний тип індексу блокується. Це може бути викликано багатьма факторами, такими як обмежена пам'ять, час очікування, проблеми з PHP тощо. Але як тільки тип індексу блокується, він завжди пропускається під час запуску переіндексації.

Це зовсім не приносить користі процесу. Отже, щоб виправити цю помилку, вам потрібно визначити, який індексатор заблоковано, виконавши таку команду:

php bin/magento indexer:status

Якщо деякі індексатори мають статус Обробка у отриманому вами списку, це означає, що вони заблоковані. Таким чином, вам потрібно скинути відповідні типи індексів:

php bin/magento indexer:reset [index_type]

Потім ще раз перевірте статус індексатора та виконайте команду переіндексації для цього конкретного індексатора:

php bin/magento indexer:reindex [index_type]

"Один або кілька індексаторів недійсні"

Ще одна поширена помилка, з якою ви можете зіткнутися, — це " Один або декілька індексаторів недійсні ". Як ви знаєте, зазвичай переіндексація Magento 2 виконується автоматично за допомогою cron. Але коли щось йде не так під час індексації, очікуйте отримати цю помилку.

 Помилка Magento: один або декілька індексаторів недійсні

Щоб виправити це, потрібно перевірити, які індексатори недійсні, а потім переіндексувати їх вручну, використовуючи будь-який із описаних вище методів. Після цього необхідно ще раз перевірити стан ваших індексаторів, щоб переконатися, що проблема вирішена.

Переіндексація Magento 2 займає забагато часу

Структура Magento 2 досить складна, особливо коли йдеться про численні індексні таблиці та їхню складність. Таким чином, процес переіндексації іноді може зайняти набагато більше часу, ніж очікувалося. Це призводить до повільної обробки та оновлення даних.

Ось чому вам потрібно оптимізувати переіндексацію Magento 2 . Як правило, вам потрібно змінити розмір пакета відповідних індексаторів. Оскільки кожен з індексаторів має свою специфіку, обов’язково дізнайтеся про них заздалегідь.

Сподіваємося, що тепер ви краще розумієте переіндексацію Magento 2 та проблеми, які можуть виникнути під час процесу переіндексації. Завдяки наданим порадам ви можете продовжувати роботу свого магазину та бути впевненими, що всі дані залишаються актуальними та точними.