目录
3. 初始化 Elasticsearch 对象(注入到 Laravel 容器中)
首先在本机安装好Elasticsearch,https://blog.csdn.net/qq_43109978/article/details/95795101
1. 引入 Composer 包
composer require elasticsearch/elasticsearch
这样引入的是最新的包,我的windows装的是Elasticsearch7.2
2. 配置
需要 Elasticsearch 服务器的 IP 和端口
config/database.php文件
'elasticsearch' => [
// Elasticsearch 支持多台服务器负载均衡,因此这里是一个数组
'hosts' => explode(',', env('ES_HOSTS')),
]
.env文件(如果端口是 9200 则可以忽略不写)
ES_HOSTS=localhost
3. 初始化 Elasticsearch 对象(注入到 Laravel 容器中)
app/Providers/AppServiceProvider.php
use Elasticsearch\ClientBuilder as ESClientBuilder;
.
.
.
public function register()
{
.
.
.
// 注册一个名为 es 的单例
$this->app->singleton('es', function () {
// 从配置文件读取 Elasticsearch 服务器列表
$builder = ESClientBuilder::create()->setHosts(config('database.elasticsearch.hosts'));
// 如果是开发环境
if (app()->environment() === 'local') {
// 配置日志,Elasticsearch 的请求和返回数据将打印到日志文件中,方便我们调试
// Laravel 5.5后getMonolog() 改成了 getLogger()
$builder->setLogger(app('log')->getLogger());
}
return $builder->build();
});
}
.
.
.
4. 测试
php artisan tinker
app('es')->info()
可以看到返回正常
>>> app('es')->info()
=> [
"name" => "DESKTOP-96ALPLT",
"cluster_name" => "elasticsearch",
"cluster_uuid" => "GegcQf_ORD6ElALRS8P_uQ",
"version" => [
"number" => "7.2.0",
"build_flavor" => "default",
"build_type" => "zip",
"build_hash" => "508c38a",
"build_date" => "2019-06-20T15:54:18.811730Z",
"build_snapshot" => false,
"lucene_version" => "8.0.0",
"minimum_wire_compatibility_version" => "6.8.0",
"minimum_index_compatibility_version" => "6.0.0-beta1",
],
"tagline" => "You Know, for Search",
]