初識yii2 0和es介面

2022-05-06 06:45:10 字數 2007 閱讀 5074

做的乙個專案,資料是從es獲取的,所以最近研究了下yii2.0和es.

yii2.0有自身帶有乙個擴充套件  yii-elasticsearch.php,在配置的時候

config->web.php中配置

'elasticsearch' => [

'class' => 'yii\elasticsearch\connection',

'is_conversion_net_ip' => true,

'conversion_ips' => [

'127.0.0.1' => '127.0.0.3',

'127.0.0.2' => '127.0.0.4',

],//這兩個配置是修改yii2.0擴充套件中的connection.php,有內網ip的節點的時候yii會返回內網的節點報錯,新增這一步是為了轉換。 研究好久不知道**的問題最後請大神來幫忙解決的。。。。

配置完成之後,在瀏覽器可以追蹤bug,配置檔案裡這樣配置就好

if (yii_env_dev)

這樣在查詢es的時候,可以看到最後生成的es查詢語句。這樣配置檔案就完成了。下面是用es查詢

在models新建了乙個類  index_type_relation.php

<?php

use yii;

use yii\elasticsearch\activerecord;//使用activerecord類

use yii\helpers\arrayhelper;

class index_type_relation extends activerecord

//# table

public static function type()

public function attributes()

}

上面是查詢乙個index,乙個type的設定。在controller中的

/*** 獲取index_type_relation

*/$relation = new index_type_relation();

$relation = $relation->find()->limit(10000)->all();

$data = arrayhelper::toarray($relation);

$map_arr = array();

foreach ($data as $k=>$val)

return $map_arr;

}上面是乙個index,乙個type的查詢例項,es支援多個index,多個type的查詢,感覺這個很強大,mysql幾次查庫es乙個查詢語句搞定

這個沒有用activerecord(沒有研究出來怎麼用),用的是query類,寫了乙個index_query_data類,繼承query,使用自帶的from()、where()、limit()等

use yii\elasticsearch\query;

class index_data_query extends query

}

中間出現乙個問題,yii框架是預設使用的get查詢方式,帶有聚合的查詢出來是源資料形式,所以修改了yii元件的search()方法。預設是get,傳post就用post的方式。

目前為止,需要的資料都可以從es獲取,其中感覺很有意思是聚合,類似mysql的groupby等。

注:查詢源資料不設定limit()的時候es預設是10條,最大是10000,所以查詢源資料設定limit(10000),帶有聚合的可以設定limit(0),這樣既提高查詢速度,符合條件的也都可以查出來。

以上是邊學習yii邊實踐,所以有學習不到位的地方,希望大家指正修改。

yii 2 0 寫入日誌

首先,我們的 web.php 配置檔案中,更改於下 log tracelevel yii debug 3 0,targets class yii log filetarget levels error warning trace 在 levels 中,增加了 trace,使用如下 yii trace...

yii 2 0 寫入日誌

首先,我們的 web.php 配置檔案中,更改於下 log tracelevel yii debug 3 0,targets class yii log filetarget levels error warning trace 在 levels 中,增加了 trace,使用如下 yii trace...

yii2 0框架報錯

在action中執行echo,var dump等方法後沒有中斷,yii1.0中ajax方法返回資料可以直接通過echo獲取,但是yii2.0的response類中增加了對於返回輸出資訊的定義,所以當echo後沒有中斷程式,yii自帶的 就會出錯,不過目前我發現的情況是,只有在返回的資料結構複雜的情況...