[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”。

Screen Shot 2019-12-17 at 18.50.06.png

加入新规则。

Screen Shot 2019-12-17 at 18.30.04.png

重新构建索引,完成了。

在Magento服务器上移动到项目根目录,执行以下命令:

bin/magento indexer:reindex elasticsuite_categories_fulltext

辛苦了。

希望这些提示能够对你高效地管理类别起到帮助!

bannerAds