lotuashvili / laravel-scout-elastic-aws
Elasticsearch 驱动器为 Laravel Scout(具有 AWS IAM 功能)
Requires
- php: >=5.6.4
- elasticsearch/elasticsearch: ^6.1
- laravel/scout: ^7.1
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.0
Suggests
- elasticsearch/elasticsearch: Required to use the Elasticsearch engine (^5.0).
README
此软件包为 Laravel Scout 提供了与 AWS Elasticsearch 和 IAM 一起工作的 Elasticsearch 驱动器。
内容
安装
您可以通过 composer 安装此软件包
composer require lotuashvili/laravel-scout-elastic-aws
您必须在您的 app.php 配置中添加 Scout 服务提供者和软件包服务提供者
// config/app.php 'providers' => [ ... Laravel\Scout\ScoutServiceProvider::class, ... ScoutEngines\Elasticsearch\ElasticsearchProvider::class, ],
配置
此软件包假设您正在遵循良好的 AWS 安全准则,并且在 Laravel 的 .env 文件中不放置密码,而是遵循AWS SDK for PHP 版本 3 的凭据指南中的实践。要启用此功能,请在您的 .env 中设置以下变量。
ELASTICSEARCH_PROVIDER=aws
对于本地开发,例如在 vagrant 中,您可以使用正常的 Elasticsearch 客户端,要么省略此变量,要么按照以下方式设置它。
ELASTICSEARCH_PROVIDER=elastic
AWS 客户端需要的是区域。如果您还没有在 .env 中设置它,可以按照以下方式添加。
AWS_REGION=us-west-2
要使用 IAM 凭据,请将它们添加到 .env 中。
AWS_ACCESS_KEY= AWS_ACCESS_SECRET= AWS_ACCESS_TOKEN=
使用 Scout 进行测试
如果您的 CI 环境无法访问工作状态下的 Elasticsearch 实例,任何索引的模型都会导致它出错。为了解决这个问题,请将以下内容添加到您的 phpunit.xml 中。那里单引号包裹双引号的部分有点棘手。
<env name="SCOUT_DRIVER" value='"null"' />
Laravel 配置
在您发布了 Laravel Scout 软件包配置后
php artisan vendor:publish --provider="ScoutEngines\Elasticsearch\ElasticsearchProvider"
您需要更新主 scout 配置
// config/scout.php // Set your driver to elasticsearch 'driver' => env('SCOUT_DRIVER', 'elasticsearch'), ... 'elasticsearch' => [ 'index' => env('ELASTICSEARCH_INDEX', 'laravel'), 'hosts' => [ env('ELASTICSEARCH_HOST', 'https://'), ], ], ...
以及此软件包的配置
// config/laravel-scout-elastic.php // set this if you don't want to include it in your .env 'provider' => env('ELASTICSEARCH_PROVIDER', 'elasticsearch'), ... 'region' => env('AWS_REGION', 'us-west-2'), ...
并启用 artisan 任务
// App/Console/Kernel.php protected $commands = [ ... \ScoutEngines\Elasticsearch\Commands\CreateIndex::class, ... ],
Elasticsearch 配置
如果 Scout 无法创建与您的 Elasticsearch 服务器联系或索引不存在,它将愉快地抛出错误。
创建索引可能有些神秘,因此如果索引不存在,您可以在部署堆栈中包含以下 artisan 命令来检查索引是否存在,如果不存在,则创建它。
php artisan scout:create-index
用法
现在您可以使用 Laravel Scout 如官方文档中所述
致谢
许可证
MIT 许可证 (MIT)