晓夏

北漂的女孩

Good Luck To You!

Yii框架+ELasticsearch 使用

浏览量:408

一、修改 config/web.php 文件,给 cookieValidationKey 配置项添加一个密钥

 'request' => [ 在插入后的秘密密钥(如果它是空的),这是必需的:Cookie验证           
            'cookieValidationKey' => 'lianghuijuProject',
        ],

图片.png


yii2框架中添加Elasticsearch扩展类库

编辑composer.json文件,添加


"require": {
        ...
        "yiisoft/yii2-elasticsearch": "~2.0.0",
        ...
    },

图片.png

添加完成后,终端执行。composer update

图片.png

修改config/web.php文件,引入Elasticsearch配置

'components' => [
        'elasticsearch' => [        
                'class' => 'yii\elasticsearch\Connection',        
                'nodes' => [
                        ['http_address' => '127.0.0.1:9200'],// configure more hosts if you have a cluster
        ],
    ],
    ...
],

图片.png

新增Elasticsearch数据

Create 创建数据

model

<?php
namespace app\models;
use yii\elasticsearch\ActiveRecord;
class Customer extends ActiveRecord{   
    /*
     * @return 属性列表
     */    
    public function attributes()
    {        
       return ['name', 'address', 'registration_date'];
    }

}?>

controller

<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Elastic;
class SiteController extends Controller{  
public function actionIndex()
{
      $customer = new Elastic();      
      //primaryKey 定义 _id 字段,当不设置改值时,会随机生成22位字符。
      $customer->primaryKey = 1;
      $name = 'lianghuiju';
      $address = 'beijing';
      $customer->name = $name;
      $customer->address = $address;
      $customer->registration_date = time();
      $customer->save();
    
  }
}?>

查询数据是否保存成功

<?php
namespace app\controllers;
use app\models\Elastic;
use Yii;
use yii\web\Controller;
use yii\helpers\ArrayHelper;
class SiteController extends Controller
{
    /**
     * 列表展示
     * Displays homepage.
     * @return string
     */
    public function actionIndex() {
        echo "<pre>";
        $customer = Elastic::findOne(1);
        var_dump($customer);
        $data = ArrayHelper::toArray($customer);
        var_dump($data);
    }
}
?>

返回结果:

图片.png

将对象转数组取出我们新增的数据。

use yii\helpers\ArrayHelper;
$data = ArrayHelper::toArray($customer);

返回结果:

图片.png

更多的查询方法

//获取_indexCustomer::index();
//获取_typeCustomer::type();
//查询所有记录$customers = Customer::find()->all();
//通过主键_id查询,return object$customer = Customer::get(1);
//通过主键_id查询获取多条记录,return object$customers = Customer::mget([1,2]);
//通过映射字段查询一条记录。$customer = Customer::find()->where(['name' => 'wneji'])->one();
//查询name字段中包含 'wenji' 的所有纪录。$customers = Customer::find()->query(["match" => ["name" => "wneji"]])->all();

更新Elasticsearch数据

update( ) 更新数据

<?php
namespace app\controllers;
use app\models\Elastic;
use Yii;
use yii\web\Controller;
use yii\helpers\ArrayHelper;
class SiteController extends Controller
{
    /**
     * 列表展示
     * Displays homepage.
     * @return string
     */
    public function actionIndex() {
        $id = 1;
        $name = 'new lianghuiju';
        $address = '深圳';
        $customer = Elastic::findOne($id);
        $data = ArrayHelper::toArray($customer);
        if(empty($data)){
            die('暂无数据');

        }
        $customer->name = $name;
        $customer->address = $address;
        $customer->registration_date = time();
        if ($customer->update() == false) {
            die('更新失败');
        }else{
            echo "更新成功";
        }
    }
}
?>

updateAll( )更新所有记录

Customer::updateAll(['address' => '广东'], ['address' => 'shenzhen']);

yii2删除Elasticsearch数据

<?php
namespace app\controllers;
use app\models\Elastic;
use Yii;
use yii\web\Controller;
use yii\helpers\ArrayHelper;
class SiteController extends Controller
{
    /**
     * 列表展示
     * Displays homepage.
     * @return string
     */
    public function actionIndex() {

        $customer = Elastic::findOne(1);
        if(empty($customer)){
            die('暂无数据');
        }

        $customer->delete();

    }
}
?>

deleteAll( ) 批量删除

Customer::deleteAll( ['address' => 'shenzhen'] );

神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。