Yii框架+ELasticsearch 使用
浏览量:408
一、修改 config/web.php 文件,给 cookieValidationKey 配置项添加一个密钥
'request' => [ 在插入后的秘密密钥(如果它是空的),这是必需的:Cookie验证 'cookieValidationKey' => 'lianghuijuProject', ],
yii2框架中添加Elasticsearch扩展类库
编辑composer.json文件,添加
"require": { ... "yiisoft/yii2-elasticsearch": "~2.0.0", ... },
添加完成后,终端执行。composer update
修改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 ], ], ... ],
新增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); } } ?>
返回结果:
将对象转数组取出我们新增的数据。
use yii\helpers\ArrayHelper; $data = ArrayHelper::toArray($customer);
返回结果:
更多的查询方法
//获取_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'] );
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。