定制 borales/yii2-elasticsearch-behavior 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

borales/yii2-elasticsearch-behavior

最新稳定版本:0.0.1

Composer 安装命令:

composer require borales/yii2-elasticsearch-behavior

包简介

Yii2 behavior to support Elasticsearch indexing

README 文档

README

Latest Stable Version Total Downloads Latest Unstable Version License

Yii2 AR behavior to support Elasticsearch auto-indexing.

image

Installation

The preferred way to install this extension is through composer.

Either run

$ php composer.phar require "borales/yii2-elasticsearch-behavior" "*"

or add

"borales/yii2-elasticsearch-behavior": "*"

to the require section of your composer.json file.

Configuring

Configure model as follows (for "command" mode):

class Post extends \yii\db\ActiveRecord
{
    public function behaviors()
    {
        return [
            ...
            'elasticsearch' => [
                'class' => \borales\behaviors\elasticsearch\Behavior::className(),
                'mode' => 'command',
                'elasticIndex' => 'project-index',
                'elasticType' => 'posts',
                'dataMap' => [
                    'id' => 'id',
                    'title' => 'name',
                    'body' => function() {
                        return strip_tags($this->body);
                    },
                    'date_publish' => function() {
                        return date('U', strtotime($this->date_create));
                    },
                    'author' => function() {
                        return ucfirst($this->author->name);
                    }
                ]
            ],
        ];
    }
    
    ...
}

Configuration values of the behavior:

  • mode (possible values: command or model. Default is command) - it is the option, which controls how to interact with Elasticsearch:
  • in case of command - the behavior use \Yii::$app->elasticsearch->createCommand() way to execute commands. In this mode - it is required to set up elasticIndex and elasticType params.
  • in case of model - it is required to set up elasticClass parameter with the value of model class name (specified class must extend the \yii\elasticsearch\ActiveRecord model class). In this case behavior will communicate with Elasticsearch through the specified model class.
  • dataMap - this is an optional parameter. By default - the behavior will use $this->owner->attributes dynamic property of the \yii\db\ActiveRecord class (you can learn more how to set up this property here). Otherwise - this is a key-value array, where the keys are the field names for the Elasticsearch entry and the values are the field names of the current \yii\db\ActiveRecord model or anonymous functions (callbacks).

Example of using "model" mode

class Post extends \yii\db\ActiveRecord
{
    public function behaviors()
    {
        return [
            ...
            'elasticsearch' => [
                'class' => \borales\behaviors\elasticsearch\Behavior::className(),
                'mode' => 'model',
                'elasticClass' => \common\models\elastic\PostElastic::className(),
                'dataMap' => [
                    'id' => 'id',
                    'title' => 'name',
                    'body' => function() {
                        return strip_tags($this->body);
                    },
                    'date_publish' => function() {
                        return date('U', strtotime($this->date_create));
                    },
                    'author' => function() {
                        return ucfirst($this->author->name);
                    }
                ]
            ],
        ];
    }
    
    ...
}

...

class PostElastic extends \yii\elasticsearch\ActiveRecord
{
    /**
     * @return array the list of attributes for this record
     */
    public function attributes()
    {
        // path mapping for '_id' is setup to field 'id'
        return ['id', 'title', 'body', 'date_publish', 'author'];
    }
}

More details and features about Elasticsearch ActiveRecord you will find here.

统计信息

  • 总下载量: 10.04k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 21
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 21
  • Watchers: 5
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2014-12-03