carropublic / herosearch
Laravel scout 使用 Elasticsearch 驱动
3.0.1
2024-02-28 04:11 UTC
Requires
- elasticsearch/elasticsearch: ~7.6
- illuminate/support: ~5|~6|~7|~8|~9|~10
- laravel/scout: ~8|~9|~10
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4
- phpunit/phpunit: ^8.0
- sempro/phpunit-pretty-print: ^1.0
This package is not auto-updated.
Last update: 2024-09-25 09:40:13 UTC
README
Laravel Scout elasticsearch driver 基于我们的需求。
什么是 hero-search?
在 Carro 之前,它是 car hero。基于此,我们将自己的 elastic-scout 包命名为 hero search。Hero search 是一个 scout 包。我们创建这个包是为了满足自己的需求。目前,这个包主要受到 这个课程 的启发。我们将根据我们的需求继续添加功能。
安装
确保您已安装 elasticsearch
$ composer require carropublic/herosearch
您应该使用以下命令发布 Scout 和 ElasticSearch 配置:
$ php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
$ php artisan vendor:publish --provider="CarroPublic\HeroSearch\HeroSearchServiceProvider"
包配置
在您的 .env
文件中,添加运行中的 elasticsearch 的主机和端口。
ELASTICSEARCH_HOST=your_elasticsearch_host
ELASTICSEARCH_PORT=your_elasticsearch_port
# This prefix will be used to append before the index name
# To separate environement when sharing ES instance
ELASTICSEARCH_INDEX_PREFIX=prefix
将 scout 驱动更新为 elasticsearch
。
SCOUT_DRIVER=elasticsearch
使用示例
在您的模型中使用 scout Searchable
特性
<?php namespace App; use Laravel\Scout\Searchable; class User extends Model { use Searchable; ... }
需要为您的模型添加索引,以便使用 scout 搜索
$ php artisan hero-search:elasticsearch:create path_to_your_model(Eg. App\\User)
然后导入记录
$ php artisan scout:import path_to_your_model(Eg. App\\User)
您也可以通过 flush 命令删除导入的数据
$ php artisn scout:flush path_to_your_model(Eg. App\\User)
在模型中添加 searchableFields
方法以识别查询必须在哪些字段中进行搜索。例如
public function searchableFields() { return [ 'name', 'email' ]; }
然后可以使用以下方式搜索
Model::search($query)
例如
User::search('foo');
发布历史
贡献
- 在 https://github.com/carro-public/hero-search 上进行分支
- 创建您的功能分支(git checkout -b feature/fooBar)
- 提交您的更改(git commit -am 'Add some fooBar')
- 将更改推送到分支(git push origin feature/fooBar)
安全性
如果您发现任何与安全性相关的问题,请通过电子邮件 aung.koko@carro.co 联系我们,而不是使用问题跟踪器。
致谢
- 所有贡献者
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅许可文件。