laravel使用Elasticsearch
一、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()
{
//
}
}
四、测试
- php artisan tinker
Laravel artisan 的 tinker 是一个 REPL (read-eval-print-loop),REPL 是指 交互式命令行界面,它可以让你输入一段代码去执行,并把执行结果直接打印到命令行界面里。- 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
作者:单车登月
来源链接:https://blog.csdn.net/sinat_38926283/article/details/117189158
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。