版本说明
注意自己的PHP
版本和Elasticsearch
版本的对应关系,选择合适的PHP Elasticsearch
客户端版本
Elasticsearch版本 | PHP ES客户端版本 | PHP版本 |
---|---|---|
>= 7.0, < 8.0 | >= 7.0 | >= 7.1 |
>= 6.6,<= 6.7 | 6.7.x | > 7.0 |
>= 6.0,<= 6.5 | 6.5.x | > 7.0 |
>= 5.0,<= 6.0 | 5.5.x | > 5.6,< 7.0 |
安装依赖
使用 Comoposer 方式安装
composer require elasticsearch/elasticsearch
封装
单例模式封装
class EsClient
{
const ES_HOST_NAME = '192.168.0.242';
private static $instance;
/**
* Es的连接句柄
*
* @var object
*/
private $elastic;
/**
* 私有化构造函数,防止类外实例化
* @param
*/
private function __construct()
{
$this->elastic = ClientBuilder::create()->setHosts([self::ES_HOST_NAME])->build();
}
/**
* 私有化克隆函数,防止类外克隆对象
*/
private function __clone()
{
}
/**
* 类的唯一公开静态方法,获取类单例的唯一入口
* @return object
*/
public static function getEsInstance()
{
if (!(self::$instance instanceof self)) {
self::$instance = new self();
}
return self::$instance;
}
/**
* 获取Es的连接实例
* @return \Elasticsearch\Client|object
*/
public function getEsConn()
{
return $this->elastic;
}
/**
* 需要在单例切换的时候做清理工作
*/
public function __destruct()
{
self::$instance->elastic->close();
self::$instance = null;
}
}
ES客户端操作封装
class EsService
{
// ES客户端链接
private $client;
/**
* 构造函数
* MyElasticsearch constructor.
*/
public function __construct()
{
// 单例获取
$this->client = EsClient::getEsInstance()->ge