2022-06-21

2022-06-22  本文已影响0人  一位先生_

<?php
namespace App\Http\Controllers\Api\Common;

use Elasticsearch\ClientBuilder;

class ElasticConnect {

/**
 * ES的ip
 *
 * @var string
 */
const ESHOSTNAME =
[
'host' => '81.69.33.124', // 域名
    'port' => '9200', // 端口
    'scheme' => 'http', // 协议
    'user' => 'elastic', // 账号
    'pass' => 'my2022#@!' // 密码
];

/**
 * ES的port
 *
 * @var int
 */
const ESPORT = 9200;

/**
 * ES的索引name
 *
 * @var int
 */
const ESINDEXNAME = 'my_index';
/**
 * 类单例
 *
 * @var object
 */
private static $instance;
/**
 * Es的连接句柄
 *
 * @var object
 */
private $elastic;
/**
 * 私有化构造函数,防止类外实例化
 *
 * @param
 */
private function __construct ()
{
    $this->elastic = ClientBuilder::create()->setHosts([self::ESHOSTNAME])->build();
}
/**
 * 私有化克隆函数,防止类外克隆对象
 */
private function __clone ()
{}
/**
 * 类的唯一公开静态方法,获取类单例的唯一入口
 *
 * @return object
 */
public static function getEslasticInstance ()
{
    if (! (self::$instance instanceof self)) {
        self::$instance = new self();
    }
    return self::$instance;
}
/**
 * 获取Es的连接实例
 *
 * @return
 */
public function getEsConn ()
{
    return $this->elastic;
}
/**
 * 需要在单例切换的时候做清理工作
 */
public function __destruct ()
{
    self::$instance->elastic->close();
    self::$instance = NULL;
}

}

上一篇 下一篇

猜你喜欢

热点阅读