carropublic/herosearch

Laravel scout 使用 Elasticsearch 驱动

3.0.1 2024-02-28 04:11 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');

发布历史

贡献

  1. https://github.com/carro-public/hero-search 上进行分支
  2. 创建您的功能分支(git checkout -b feature/fooBar)
  3. 提交您的更改(git commit -am 'Add some fooBar')
  4. 将更改推送到分支(git push origin feature/fooBar)

安全性

如果您发现任何与安全性相关的问题,请通过电子邮件 aung.koko@carro.co 联系我们,而不是使用问题跟踪器。

致谢

  • 所有贡献者

许可协议

MIT 许可协议(MIT)。有关更多信息,请参阅许可文件。