fancyecommerce / fecshop_elasticsearch
fecshop elasticsearch 扩展,用于分类、产品、搜索页面,底层使用 ElasticSearch 支持
Requires
- yiisoft/yii2-elasticsearch: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-24 09:36:34 UTC
README
fecshop elasticsearch 功能部分,用于将分类,产品,搜索页面,底层使用 ElasticSearch 支持
环境安装
1.安装 ElasticSearch 6.1
http://www.fecshop.com/topic/672
2.安装 ElasticSearch 可视化工具 Kibana
http://www.fecshop.com/topic/668
安装 fecshop elasticSearch 扩展,也就是本扩展
1.安装
composer require --prefer-dist fancyecommerce/fecshop_elasticsearch
或 在根目录的composer.json中添加
"fancyecommerce/fecshop_elasticsearch": "~1.xx" // 使用最新版本号 ,在这里查看:https://github.com/fecshop/yii2_fecshop_elasticsearch/releases
然后执行
composer update
yii2-elasticSearch 扩展bug处理
yii2-elasticSearch 目前还不支持 ElasticSearch 6 的处理,会有问题,而且 yii2 项目组好像很忙:yiisoft/yii2-elasticsearch#167 (comment),因此对其进行了略微改动(比较粗暴的改动,仅支持本插件)
1.在根目录composer.json中添加 "yiisoft/yii2-elasticsearch": "2.1@dev",,然后执行composer update
2.更新后,然后将 vendor/fancyecommerce/fecshop_elasticsearch/yii2-elasticSearch 下的三个php文件覆盖到/vendor/yiisoft/yii2-elasticsearch 下即可
3.当 yii2-elasticSearch 项目组修复了这个问题后,此处将不需要执行(这个只能等官方了)
配置
1.添加当前扩展的配置到 fecshop
将 vendor/fancyecommerce/fecshop_elasticsearch/config/fecshop_elasticsearch.php文件复制到 common/config/fecshop_third_extensions/下面,然后打开这个文件
1.1在 nodes 处配置ip和port,配置 ES 的连接
1.2在searchLang处,配置支持的语言,也就是把您的网站的语言都填写过来,那么,这些语言就会使用 elasticSearch搜索。
2.将 MongoDB 和 Xunsearch 搜索的语言改为 elasticSearch
打开文件 common/config/fecshop_local_services/Search.php
将 MongoDB 和 Xunsearch 部分的搜索语言部分注释掉,如果您想要某些语言继续使用 MongoDB 或 Xunsearch 搜索,那么可以保留某些语言,各个搜索引擎的searchLang中的语言都是唯一的,不要一种语言出现在 2 个搜索引擎里面
// mongodb
/*
'searchLang' => [
'en' => 'english',
'fr' => 'french',
'de' => 'german',
'es' => 'spanish',
'ru' => 'russian',
'pt' => 'portuguese',
],
*/
// xunsearch
/*
'searchLang' => [
'zh' => 'chinese',
],
*/
3.初始化数据
fecshop 根目录下执行
3.1、新建 elasticSearch 的 mapping(必须执行)
./yii elasticsearch/updatemapping
3.2、删除 es 的产品 index(当您的 mapping 中的某个字段需要修改,直接修改是无效的,只能删除 index 库,然后重建)
./yii elasticsearch/clean
3.3、同步产品到 elasticSearch(必须执行)
cd vendor/fancyecommerce/fecshop/shell/search/
sh fullSearchSync.sh
3.4、然后,es 部分就可以访问了
3.5、当您的产品信息有改动的时候,产品保存的时候,会自动同步到 ES 的
扩展
搜索的 model 路径为: vendor/fancyecommerce/fecshop_elasticsearch/models/elasticSearch/Product.php,如果您想更改里面的内容,您可以重写这个 model,进行更改,重写 model 可以参看:
通过 rewriteMap 进行重写 Block Model 层
备注
1.支持的语言
https://github.com/fecshop/yii2_fecshop_elasticsearch/blob/master/models/elasticSearch/Product.php
暂时支持这些语言
'zh' => 'cjk', // 中国
'kr' => 'cjk', // 韩国
'jp' => 'cjk', // 日本
'en' => 'english', //
'fr' => 'french',
'de' => 'german',
'it' => 'italian',
'pt' => 'portuguese',
'es' => 'spanish',
'ru' => 'russian',
'nl' => 'dutch',
'br' => 'brazilian',
Es6 默认就支持的 analysis,详细参看:https://elastic.ac.cn/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html#english-analyzer
2.产品搜索 index
一个语言一个 index(ElasticSearch 的 index,有一点点类似 MySQL 的数据库,type,一点点类似表,不过完全不同。)