thiagoprz / vegvisir-elasticsearch
Vegvisir Elasticsearch - Laravel 搜索索引器
dev-main
2022-05-07 12:18 UTC
Requires
- php: ^8.1
- ext-json: *
- elasticsearch/elasticsearch: ^7
- guzzlehttp/guzzle: ^7.0
- laravel/framework: 8.*||9.*
- spatie/data-transfer-object: ^3.7.3
- thiagoprz/vegvisir: dev-main
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-07 17:36:04 UTC
README
这是vegvisir包的Elasticsearch适配器,该包提供了增强Laravel应用程序搜索性能的搜索工具。支持直接使用Eloquent实现,同时也提供了使用仓库作为替代方法的可能性。
目录
安装
使用Composer在您的应用程序中安装它:composer require thiagoprz/vegvisir-elasticsearch
配置
如有必要,将服务提供者添加到config/app.php(如果启用自动发现,则无需此步骤)
..
'providers' => [
...
\Thiagoprz\VegvisirElasticsearch\VegvisirElasticSearchServiceProvider::class,
],
...
运行php artisan vendor:publish以发布配置。
这将添加vegvisir.php文件到config目录。
使用
此适配器连接到Elasticsearch主机,并在您的模型发生变化时插入/更新/删除。
要启用Elasticsearch适配器,只需将相关服务提供者添加到您的应用程序配置中,并定义与您的Elasticsearch主机相关的环境变量。
- 在config/app.php中启用VegvisirElasticSearchServiceProvider
<?php
...
'providers' => [
...
Thiagoprz\VegvisirElasticsearch\VegvisirElasticSearchServiceProvider::class,
],
...
- 将以下变量添加到您的.env文件中,以配置Elasticsearch访问
VEGVISIR_ELASTICSEARCH_HOSTS=0.0.0.0:9200,0.0.0.1:9200
您可以添加任意数量的Elasticsearch主机。
- 将可搜索特性添加到您的模型中,并建立可搜索字段
use Thiagoprz\Vegvisir\Traits\Searchable;
class Post extends Model
{
use Searchable;
...
/**
* This method is optional, but recommended in case of tables with too many fields or fields that won't be searched
*/
public function toSearchArray(): array
{
return [
'id' => $this->id,
'title' => $this->title,
'description' => $this->description,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
/**
* Defines fields to be searched
*/
public function getSearchFields(): array
{
return ['title', 'description'];
}
}
- 在EventServiceProvider上附加事件观察器
use Thiagoprz\Vegvisir\Observers\VegvisirObserver;
use App\Models\Post;
...
class EventServiceProvider extends ServiceProvider
{
...
public function boot()
{
Post::observe(VegvisirObserver::class);
}
- 创建您的模型仓库(可选)
namespace App\Repositories;
use App\Models\Post;
use Thiagoprz\VegvisirElasticsearch\Repositories\ElasticSearchRepository;
class PostRepository extends ElasticSearchRepository
{
/**
* Repository model class
*/
public $modelClass = Post::class;
}
贡献
测试
vendor/phpunit/phpunit/phpunit --configuration phpunit.xml tests
支持
问题
请随意创建问题,这将非常有帮助。我会尽快处理。
许可证
此软件包根据MIT许可证授权。