[Magento2]如何动态创建类别-引入Elasticsearch虚拟类别
这篇文章是Magento Advent Calendar 2019第17天的文章。
1. 为什么需要动态确定商品类别
2. 工具介绍
3. 步骤1 安装并启动Elasticsearch
4. 步骤2 安装并启动SmileSA/ElasticSuite
5. 步骤3 创建虚拟类别和规则
如果你想了解更详细的原因,请尝试安装Magento,并参考樱之知识中心。
首先为什么需要动态确定分类商品的必要性
1.1 创建分类很容易
不再需要为商品注册和创建分类而费心了。
人类之所以能够防止错误也是一个优点。
1.2 个类别的操作也很轻松
当需要更换构成类别的商品或者迁移类别时,只需要更改规则,很轻松方便。
可以灵活运营
可以显示有折扣的商品只需设置一个标志,还可以显示仅有该标志的商品等,具备灵活性的运营是可能的。
使用每个品牌和产品规格等自定义商品属性的值来创建Virtual Category,这样可以提高自由度和便利性。
您也可以使用条件组合来显示某个品牌的折扣商品。
2. 工具介绍
Elasticsearch是一种用于搜索和分析的工具,本次介绍的功能依赖于它。
由于Magento的标准搜索功能不够好,因此建议在任何项目中都使用它。
它可以提高商品搜索的准确性和速度,使实现虚拟类别变得更加容易。
在Magento2.3中,使用Elasticsearch6.x系列。(请注意,从DevDocs链接转到7.x系列的说明可能存在陷阱)
微笑的ElasticSuite是基于Elasticsearch的一组模块,可以立即在Magento中使用商业软件的功能。
在Magento中使用Elasticsearch时,请使用这个模块。
本次将使用其中的Smile_ElasticsuiteVirtualCategory模块。
在Magento 2.3中,将使用ElasticSuite 2.8.x系列。
1. 安装Elasticseach的第一步。
3.1 安装Java
// パッケージの更新 & OpenJDKをインストール
sudo apt-get update && sudo apt-get install default-jdk
// インストールVersionを確認
java -version
如果能输出类似下述这样的结果就可以了。
openjdk version “1.8.0_222”
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
3.2 安装并启动 Elasticsearch
// Public signing keyを取得
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
// APTレポジトリをインストール
sudo apt-get install apt-transport-https
// aptのソースにレポジトリ定義を保存
echo “deb https://artifacts.elastic.co/packages/6.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
// パッケージの更新 & Elasticsearchをインストール
sudo apt-get update && sudo apt-get install elasticsearch
// Elasticsearchを起動(systemdの場合)
sudo systemctl start elasticsearch.service
// システム立ち上げ時に自動的に起動するようにする
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
使用 curl 命令检查启动情况,
如果输出如下,则表示启动成功。
如果输出结果如下所示,则表示启动已经完成。
curl -X GET "localhost:9200/?pretty"
{
“name” : “u_euS1C”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “7se8J-n5Sem0Ee1CAoNayQ”,
“version” : {
“number” : “6.8.5”,
“build_flavor” : “default”,
“build_type” : “deb”,
“build_hash” : “78990e9”,
“build_date” : “2019-11-13T20:04:24.100411Z”,
“build_snapshot” : false,
“lucene_version” : “7.7.2”,
“minimum_wire_compatibility_version” : “5.6.0”,
“minimum_index_compatibility_version” : “5.0.0”
},
“tagline” : “You Know, for Search”
}
请确保安装了Elasticsuite所需的插件。
cd /usr/share/elasticsearch
bin/elasticsearch-plugin install analysis-phonetic
bin/elasticsearch-plugin install analysis-icu
现在,Elasticsearch已经准备好了。
4. 安装步骤2,SmileSA/ElasticSuite。
进入DocumentRoot目录并编辑composer.json文件
“require”: {
“smile/elasticsuite”: “^2.8”,
}
添加。
随后,
composer update
执行此操作以安装模块。
接下来是模块的启用。
bin/magento module:enable Smile_ElasticsuiteCore Smile_ElasticsuiteCatalog Smile_ElasticsuiteCatalogRule Smile_ElasticsuiteCatalogOptimizer Smile_ElasticsuiteVirtualCategory
// モジュール有効/無効時には毎回setup:upgradeが必要です。
bin/magento setup:upgrade
现在可以使用Elasticsuite了。
5. 创建虚拟类别(VirtualCategory)步骤3。
首先从管理界面正常添加类别。
然后在选择类别商品的标签上会出现选择虚拟类别的按钮,这时候我会选择”Yes”。

加入新规则。

重新构建索引,完成了。
在Magento服务器上移动到项目根目录,执行以下命令:
bin/magento indexer:reindex elasticsuite_categories_fulltext
辛苦了。
希望这些提示能够对你高效地管理类别起到帮助!