Yii框架+ELasticsearch 使用
浏览量:413
一、修改 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'] );

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