Laravel 中使用 Elasticsearch

目录

1. 引入 Composer 包

2. 配置

3. 初始化 Elasticsearch 对象(注入到 Laravel 容器中)

4. 测试


首先在本机安装好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",
   ]
发布了107 篇原创文章 · 获赞 18 · 访问量 6330

猜你喜欢

转载自blog.csdn.net/qq_43109978/article/details/100067884