yii2-elasticsearch-behavior

Yii2 behavior to support Elasticsearch indexing

  • 所有者: Borales/yii2-elasticsearch-behavior
  • 平台:
  • 許可證: Other
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

Elasticsearch Behavior for Yii 2

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.

主要指標

概覽
名稱與所有者Borales/yii2-elasticsearch-behavior
主編程語言PHP
編程語言PHP (語言數: 1)
平台
許可證Other
所有者活动
創建於2014-12-03 01:53:29
推送於2016-05-13 12:03:00
最后一次提交2015-01-30 21:31:00
發布數1
最新版本名稱0.0.1 (發布於 )
第一版名稱0.0.1 (發布於 )
用户参与
星數21
關注者數6
派生數6
提交數12
已啟用問題?
問題數7
打開的問題數4
拉請求數0
打開的拉請求數1
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?