ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

laravel使用Elasticsearch

2021-05-23 10:59:50  阅读:267  来源: 互联网

标签:laravel app shard version Elasticsearch build 使用 elasticsearch es


一、composer安装elasticsearch扩展包

composer require elasticsearch/elasticsearch “7.12.x” --ignore-platform-reqs

二、配置es

  • config/database.php
 'elasticsearch' => [
        'hosts' => explode(',',env('ES_HOSTS')),
    ]
  • .env
 ES_HOSTS=192.168.148.188:9200 #默认9200,端口可不写

三、初始化 Elasticsearch 对象,并注入到 Laravel 容器中

在laravel容器中自定义一个名为es的服务对象,通过ESClientBuilder以及配置文件中的信息连接到es,我们可以通过app(‘es’)->info()查看连接之后的es对象信息。

  • App/Providers/AppServiceProvider.php
<?php

namespace App\Providers;

use Elasticsearch\ClientBuilder as ElasticClientBuilder;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        // 注册一个名为 es 的单例
        $this->app->singleton('es',function (){
            // 从配置文件读取 Elasticsearch 服务器列表
            $builder =  ElasticClientBuilder ::create()->setHosts(config('database.elasticsearch.hosts'));
            // 如果是开发环境
            if (app()->environment()==='local'){
                // 配置日志,Elasticsearch 的请求和返回数据将打印到日志文件中,方便我们调试
                $builder->setLogger(app('log')->driver());
            }
            return $builder->build();
        });
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

四、测试

  1. php artisan tinker
    Laravel artisan 的 tinker 是一个 REPL (read-eval-print-loop),REPL 是指 交互式命令行界面,它可以让你输入一段代码去执行,并把执行结果直接打印到命令行界面里。
  2. app(‘es’)->info()
we123@LAPTOP-P1SSGT9F MINGW64 /e/project/lmrs/lmrs
$ php artisan tinker
Psy Shell v0.10.8 (PHP 7.3.4 — cli) by Justin Hileman

>>> app('es')->info()
=> [
     "name" => "es-node-1",
     "cluster_name" => "my-application",
     "cluster_uuid" => "UFOIRUHPRZuVVRNaSeubJw",
     "version" => [
       "number" => "7.12.1",
       "build_flavor" => "default",
       "build_type" => "docker",
       "build_hash" => "3186837139b9c6b6d23c3200870651f10d3343b7",
       "build_date" => "2021-04-20T20:56:39.040728659Z",
       "build_snapshot" => false,
       "lucene_version" => "8.8.0",
       "minimum_wire_compatibility_version" => "6.8.0",
       "minimum_index_compatibility_version" => "6.0.0-beta1",
     ],
     "tagline" => "You Know, for Search",
   ]
>>>

快速检查es集群的健康状况

GET /_cat/health?v
在这里插入图片描述

如何快速了解集群的健康状况?status -> green、yellow、red?

  • green:每个索引的primary shard和replica shard都是active状态的
  • yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
  • red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了

快速查看es集群中有哪些索引

GET /_cat/indices?v
在这里插入图片描述

标签:laravel,app,shard,version,Elasticsearch,build,使用,elasticsearch,es
来源: https://blog.csdn.net/sinat_38926283/article/details/117189158

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有