babenkoivan / elastic-scout-driver-plus
Elastic Scout Driver 扩展
Requires
- php: ^8.2
- babenkoivan/elastic-scout-driver: ^4.0
Requires (Dev)
- babenkoivan/elastic-migrations: ^4.0
- friendsofphp/php-cs-fixer: ^3.14
- laravel/legacy-factories: ^1.3
- laravel/scout: ^10.0
- orchestra/testbench: ^9.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
- dev-master
- v5.0.0
- v4.x-dev
- v4.8.0
- v4.7.0
- v4.6.0
- v4.5.1
- v4.5.0
- v4.4.0
- v4.3.1
- v4.3.0
- v4.2.0
- v4.1.0
- v4.0.2
- v4.0.1
- v4.0.0
- v3.x-dev
- v3.5.1
- v3.5.0
- v3.4.0
- v3.3.0
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.0
- v3.0.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.1
- v2.0.0
- v1.18.1
- v1.18.0
- v1.17.0
- v1.16.0
- v1.15.0
- v1.14.0
- v1.13.0
- v1.12.0
- v1.11.1
- v1.11.0
- v1.10.1
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.0
- v1.5.1
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-18 08:19:55 UTC
README
为 Elastic Scout Driver 提供扩展。
内容
特性
Elastic Scout Driver Plus 支持
兼容性
当前版本的 Elastic Scout Driver Plus 已与以下配置进行测试
- PHP 8.2
- Elasticsearch 8.x
- Laravel 11.x
- Laravel Scout 10.x
如果你的项目使用较旧的 Laravel(或 PHP)版本,请检查此包的先前主要版本。
安装
可以通过 Composer 安装此库
composer require babenkoivan/elastic-scout-driver-plus
注意,此库在没有 Elastic Scout Driver 的情况下无法工作。如果尚未安装,请按照此处描述的安装步骤进行操作。如果您已经使用 Elastic Scout Driver,建议在安装 Elastic Scout Driver Plus 之前更新它
composer update babenkoivan/elastic-scout-driver
安装库后,您需要将 Elastic\ScoutDriverPlus\Searchable
特性添加到您的模型中。如果某些模型已经使用了标准 Laravel\Scout\Searchable
特性,则应将其替换为 Elastic Scout Driver Plus 提供的特性。
如果您想使用 Elastic Scout Driver Plus 与 Lumen 框架,请参考此指南。
使用
查询
在开始搜索模型之前,您应该定义一个查询。您可以使用查询构建器或使用数组描述查询
use Elastic\ScoutDriverPlus\Support\Query; // using a query builder $query = Query::match() ->field('title') ->query('My book') ->fuzziness('AUTO'); // using a raw query $query = [ 'match' => [ 'title' => [ 'query' => 'My book', 'fuzziness' => 'AUTO' ] ] ];
Elastic\ScoutDriverPlus\Support\Query
工厂中的每个方法都为相应类型创建一个查询构建器。下面列出了可用方法
搜索参数
查询定义后,您可以使用 searchQuery
方法开始新的搜索
$builder = Book::searchQuery($query);
然后,您可以链接其他参数以使您的搜索请求更精确
$builder = Book::searchQuery($query) ->size(2) ->sort('price', 'asc');
构建器支持各种搜索参数并提供了一些有用的辅助函数
搜索结果
您可以通过在构建器上链接 execute
方法来检索搜索结果
$searchResult = Book::searchQuery($query)->execute();
$searchResult
提供了对匹配的条目、模型、文档等的便捷访问。
$hits = $searchResult->hits(); $models = $searchResult->models(); $documents = $searchResult->documents(); $highlights = $searchResult->highlights();
您可以在这个页面上了解更多关于 $searchResult
对象的信息,并学习如何分页显示搜索结果。
自定义路由
如果您想为模型使用自定义分片路由,则覆盖 searchableRouting
方法。
class Book extends Model { use Elastic\ScoutDriverPlus\Searchable; public function searchableRouting() { return $this->user->id; } }
自定义路由会自动应用于所有索引和删除操作。
贪婪加载关系
有时您需要将关联数据索引到模型中
class Book extends Model { use Elastic\ScoutDriverPlus\Searchable; public function toSearchableArray() { return [ 'title' => $this->title, 'price' => $this->price, 'author' => $this->author->only(['name', 'phone_number']), ]; } }
通过覆盖 searchableWith
方法,您可以提高批量操作的性能
class Book extends Model { use Elastic\ScoutDriverPlus\Searchable; public function toSearchableArray() { return [ 'title' => $this->title, 'price' => $this->price, 'author' => $this->author->only(['name', 'phone_number']), ]; } public function searchableWith() { return ['author']; } }
如果您正在寻找一种方法来预加载与搜索查询匹配的模型的关系,请查看构建器的 load
方法文档。
多个连接
您可以在客户端的配置文件中配置多个连接到 Elasticsearch。如果您想更改模型使用的连接,则需要覆盖 searchableConnection
方法。
class Book extends Model { use Elastic\ScoutDriverPlus\Searchable; public function searchableConnection(): ?string { return 'books'; } }