alexsaab / laravel-elasticsearch
在Laravel应用程序中轻松使用官方PHP ElasticSearch客户端的方法。
Requires
- php: ^7.2
- elasticsearch/elasticsearch: ^7.0
- illuminate/contracts: ~5.8.0|^6.0
- illuminate/support: ~5.8.0|^6.0
Requires (Dev)
- limedeck/phpunit-detailed-printer: ^5.0
- orchestra/testbench: ~3.8.0|~4.0
- phpunit/phpunit: ^8.0
Suggests
- aws/aws-sdk-php: Required to connect to an Elasticsearch host on AWS (^3.80)
README
在Laravel或Lumen应用程序中轻松使用官方Elastic Search客户端的方法。
安装和配置
通过composer安装alexsaab/laravel-elasticsearch
包的当前版本
composer require alexsaab/laravel-elasticsearch
如果你使用的是ElasticSearch版本5,则安装此包的2版本
composer require alexsaab/laravel-elasticsearch:^2
Laravel
包的服务提供程序将自动注册其服务提供程序。
发布配置文件
php artisan vendor:publish --provider="Alexsaab\LaravelElasticsearch\ServiceProvider"
通过.env文件进行替代配置方法
按照上述建议发布配置文件后,您可以通过向应用程序的.env
文件添加以下内容来配置ElasticSearch(使用适当的值)
ELASTICSEARCH_HOST=localhost ELASTICSEARCH_PORT=9200 ELASTICSEARCH_SCHEME=http ELASTICSEARCH_USER= ELASTICSEARCH_PASS=
连接到AWS Elasticsearch服务
如果您正在连接到Amazon AWS上的ElasticSearch实例,则还需要composer require aws/aws-sdk-php:^3.80
并添加以下内容到您的.env
文件
AWS_ELASTICSEARCH_ENABLED=true AWS_REGION=... AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=...
Lumen
如果您使用Lumen,请在bootstrap/app.php
中注册服务提供程序和配置
$app->register(Alexsaab\LaravelElasticsearch\ServiceProvider::class); $app->configure('elasticsearch');
手动将配置文件复制到您的应用程序。
使用方法
Elasticsearch
外观只是ES客户端的入口点,因此之前您可能使用了以下内容:
$data = [ 'body' => [ 'testField' => 'abc' ], 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id', ]; $client = ClientBuilder::create()->build(); $return = $client->index($data);
现在,您可以简单地替换这两行内容为以下内容:
$return = Elasticsearch::index($data);
这将使用默认连接运行命令。您可以在任何连接上运行命令(请参阅配置文件中的defaultConnection
设置和connections
数组)。
$return = Elasticsearch::connection('connectionName')->index($data);
希望使用外观的Lumen用户可以通过编辑bootstrap/app.php
文件来包含以下内容
$app->withFacades(true, [ ... Alexsaab\LaravelElasticsearch\Facade::class => 'Elasticsearch', ... ]);
不使用外观的Lumen用户需要使用依赖注入或应用程序容器来获取ES服务对象
// using injection: public function handle(\Alexsaab\LaravelElasticsearch\Manager $elasticsearch) { $elasticsearch->ping(); } // using application container: $elasticSearch = $this->app('elasticsearch');
当然,依赖注入和应用程序容器也适用于Laravel应用程序。
高级使用
由于此包是围绕官方Elastic客户端的包装,因此您可以使用此包做很多事情。您不仅可以执行标准的CRUD操作,还可以通过编程方式监控Elastic集群的健康状况、备份它或对其进行更改。其中一些操作是通过“命名空间”命令完成的,该包完全支持这些命令。
获取索引的统计信息
$stats = Elasticsearch::indices()->stats(['index' => 'my_index']); $stats = Elasticsearch::nodes()->stats(); $stats = Elasticsearch::cluster()->stats();
创建和恢复快照(请先阅读Elastic文档中有关创建仓库路径和插件的说明)
$response = Elasticsearch::snapshots()->create($params); $response = Elasticsearch::snapshots()->restore($params);
删除整个索引(请注意!)
$response = Elasticsearch::indices()->delete(['index' => 'my_index']);
请记住,此包是围绕大量复杂且文档良好的Elastic功能的一个薄包装。有关这些功能以及调用它们所使用的方法和参数的信息,请参阅Elastic文档。有关使用它们的帮助可以在Elastic论坛和类似Stack Overflow的网站上获得。
错误、建议、贡献和支持
感谢所有为此项目做出贡献的人!
特别感谢JetBrains的开源许可计划...当然,还有卓越的PHPStorm IDE!
请使用Github来报告错误,以及发表评论或建议。
有关如何贡献更改,请参阅CONTRIBUTING.md。
版权和许可
laravel-elasticsearch由Colin Viebrock编写,并遵循MIT许可证发布。
版权所有 (c) 2015 Colin Viebrock