fancyecommerce/fecshop_elasticsearch

fecshop elasticsearch 扩展,用于分类、产品、搜索页面,底层使用 ElasticSearch 支持

安装: 111

依赖: 0

建议者: 0

安全: 0

星标: 15

关注者: 7

分支: 14

开放问题: 0

类型:yii2-extension

1.0.4 2018-02-09 04:37 UTC

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 处配置ipport,配置 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,一点点类似表,不过完全不同。)