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

本文介绍如何使用PHP操作Elasticsearch,包括连接配置、查询、排序及聚合等功能,并演示了具体的应用场景,如按条件筛选记录、按时间范围查询以及按字段进行统计聚合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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';//desc是倒序排列,正序改为asc

$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";
//用来聚合的数据条目,默认是10
$params['body']['aggs']['ip_lab']['terms']['size'] = 1000000;
//对visitcount字段求和
$params['body']['aggs']['ip_lab']['aggs']['view']['sum'] = ['field'=>'visitscount'];

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值