关于thinkphp3.2.2连接es6.0的使用的整理

1.连接配置

require './elastic/vendor/autoload.php';//引入类

 $params['hosts'] = array(
          $ip.':'.$port,

)

$this->client = new \Elasticsearch\Client($params);

2.查询

//必须的index和type

$params['index'] = 'access';
$params['type'] = 'log_access';

/*查询条件和字段*/

//确定查找某个字段等于页面传递过来的值

$params['body']['query']['bool']['must'][] = ['match_phrase'=>['ip'=>$ip]];

 $res = $this->client->search($params);

//查询时间范围

$time = I('time');//从页面获取输入的时间
$start = strtotime(explode('-',$time)[0]);
$end = strtotime(explode('-', $time)[1]);
$start = date('Y-m-d H:i:s',$start);
$end = date('Y-m-d H:i:s',$end);
$params['body']['query']['bool']['filter']['range']['time'] = ['gte'=>$start,'lte'=>$end];

 $res = $this->client->search($params);

3.排序

//按照时间排序

$params['body']['sort']['time']['order']  = 'desc';

$res = $this->client->search($params);

4.聚合

//按照一个字段聚合

$params['body']['aggs']['src_ip']['terms']['field'] = 'src_ip';

//按照多个字段聚合

$params['body']['aggs']['ip_lab']['terms']['script']['inline'] = "doc['ip'].value+'-split-'+ doc['house_id'].value";
$params['body']['aggs']['ip_lab']['terms']['size'] = 1000000;

//聚合的同时对某个字段求和

$params['body']['aggs']['ip_lab']['terms']['script']['inline'] = "doc['ip'].value+'-split-'+ doc['house_id'].value";
$params['body']['aggs']['ip_lab']['terms']['size'] = 1000000;
$params['body']['aggs']['ip_lab']['aggs']['view']['sum'] = ['field'=>'visitscount'];

//聚合求某个值的最大值和最小值等一些情况

$params['body']['aggs']['first_time']['stats'] = ['field'=>'first_time'];

此文章系本人原创,转载请标明出处。

猜你喜欢

转载自blog.csdn.net/qq_19809797/article/details/81666273