magento2中文教程-使用命令行重新索引 Magento 2

当您更改某些配置选项或切换到另一个分支或类似的东西时,您是否只是喜欢它,突然之间,Admin 中弹出一条警告消息,说:

一个或多个索引器无效。 确保您的 Magento cron 作业正在运行。

好吧,如果你和我一样“喜欢”它,我将向你展示如何解决特定的索引器,而无需知道是哪个索引器首先导致了警告出现。

以下示例处理我正在处理的项目中的两个任意索引器,但实际上本文中将提供的代码必须适用于任何标记的索引器以进行索引。 让我们跳转到 CLI 并运行 bin/magento indexer:status 命令并检查输出:

+---------------------------------------+----------------------------------------------------+------------------+-----------+---------------------+---------------------+
| ID | Title | Status | Update On | Schedule Status | Schedule Updated |
+---------------------------------------+----------------------------------------------------+------------------+-----------+---------------------+---------------------+
| amasty_xsearch_category_fulltext | Amasty: Advanced Search - Categories | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:26 |
| amasty_elastic_relevance_rule_product | Amasty: ElasticSearch - Relevance Rules (Products) | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:31 |
| amasty_elastic_relevance_rule_rule | Amasty: ElasticSearch - Relevance Rules (Rules) | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:29 |
| amasty_elastic_popup_data | Amasty: Xsearch - Popup Data | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:31 |
| catalogrule_product | Catalog Product Rule | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:24 |
| catalogrule_rule | Catalog Rule Product | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:19 |
| catalogsearch_fulltext | Catalog Search | Reindex required | Schedule | idle (0 in backlog) | 2021-05-17 15:14:56 |
| catalog_category_flat | Category Flat Data | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:17 |
| catalog_category_product | Category Products | Reindex required | Schedule | idle (0 in backlog) | 2021-05-17 15:12:10 |
| customer_grid | Customer Grid | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:12 |
| design_config_grid | Design Config Grid | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:32 |
| catalog_product_category | Product Categories | Ready | Schedule | idle (0 in backlog) | 2021-05-17 15:12:10 |
| catalog_product_attribute | Product EAV | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:20 |
| catalog_product_flat | Product Flat Data | Ready | Schedule | idle (0 in backlog) | 2021-05-17 07:18:15 |
| catalog_product_price | Product Price | Ready | Schedule | idle (0 in backlog) | 2021-05-17 15:14:31 |
| cataloginventory_stock | Stock | Ready | Schedule | idle (0 in backlog) | 2021-05-17 15:14:33 |
+---------------------------------------+----------------------------------------------------+------------------+-----------+---------------------+---------------------+

在以下场景中,您会注意到有两个索引器被标记为索引:

目录搜索
分类产品
现在我们知道哪些索引器失效了,唯一需要做的就是找到一种方法来获取用于运行单个索引器的索引器标识符 (ID)。 当然,无需键入这些值。 让我们开始一些 bash 编程吧!

步骤 1 – 获取需要运行的索引器列表

上一个命令需要使用管道“|”连接到另一个命令,如下所示:

bin/magento indexer:status | grep required

该命令执行以下操作 - 获取来自 bin/magento indexer:status 的任何输出,并使用它来搜索所需的单词。 只有找到结果,才会显示回CLI

步骤 2 – 获取索引器的 ID 值

如果你认为你会使用另一个管道,你是对的。 在命令的下一部分中,我们将使用 awk 命令使用分隔符“|”将输出结果(字符串)拆分为数组。

bin/magento indexer:status | grep required | awk -F '|' '{print $2}'

因此,您应该只获得索引器的 ID,每行一个。
catalogsearch_fulltext
catalog_category_product

步骤 3 – 仅为结果 ID 运行索引器

这是我们需要获取 awk 命令的输出并运行众所周知的 bin/magento indexer:reindex 命令的最后一步:

bin/magento indexer:status | grep required | awk -F '|' '{print $2}' | xargs bin/magento indexer:reindex

更多magento教程参考:


1.png
2.png

Magento2.x企业级开发实战

你可能感兴趣的:(magento2中文教程-使用命令行重新索引 Magento 2)