aman-rawat / elastic-scout-driver-plus
Elastic Scout Driver 扩展
Requires
- php: ^7.3 || ^8.0
- aman-rawat/elastic-adapter: ^1.0
- aman-rawat/elastic-scout-driver: dev-master
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- laravel/legacy-factories: ^1.1
- laravel/scout: ^9.0
- orchestra/testbench: ^6.12
- phpstan/phpstan: ^0.12.32
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-29 06:03:22 UTC
README
为 Elastic Scout Driver 提供扩展。
内容
功能
Elastic Scout Driver Plus 支持
兼容性
Elastic Scout Driver Plus 当前版本已与以下配置进行测试
- PHP 7.3-8.0
- Elasticsearch 7.x
- Laravel 6.x-8.x
- Laravel Scout 7.x-9.x
- Elastic Scout Driver 2.x
安装
该库可以通过 Composer 安装
composer require babenkoivan/elastic-scout-driver-plus
注意:此库在没有 Elastic Scout Driver 的情况下无法工作。如果尚未安装,请按照此处所述的安装步骤进行。如果您已经使用 Elastic Scout Driver,建议您在安装 Elastic Scout Driver Plus 之前更新它。
composer update babenkoivan/elastic-scout-driver
安装库后,您需要将 ElasticScoutDriverPlus\Searchable
trait 添加到您的模型中。如果某些模型已经使用标准 Laravel\Scout\Searchable
trait,则应将其替换为 Elastic Scout Driver Plus 提供的版本。
如果您想使用 Lumen 框架 与 Elastic Scout Driver Plus,请参阅此指南。
使用
查询
在开始搜索模型之前,您应该定义一个查询。您可以使用查询构建器或使用数组描述查询
use ElasticScoutDriverPlus\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' ] ] ];
ElasticScoutDriverPlus\Support\Query
工厂中的每个方法都为相应类型创建一个查询构建器。下面列出了可用方法
- bool
- exists
- fuzzy
- ids
- matchAll
- matchNone
- matchPhrasePrefix
- matchPhrase
- match
- multiMatch
- nested
- prefix
- range
- regexp
- term
- terms
- wildcard
搜索参数
查询定义后,您可以使用 searchQuery
方法开始新的搜索
$builder = Book::searchQuery($query);
然后您可以将其他参数链接起来,以使您的搜索请求更加精确
$builder = Book::searchQuery($query) ->size(2) ->sort('price', 'asc');
构建器支持各种搜索参数并提供了许多有用的助手
- aggregate
- boostIndex
- collapse
- from
- highlight
- join
- load
- minScore
- postFilter
- size
- sort
- refineModels
- rescore
- refineModels
- source
- suggest
- trackScores
- trackTotalHits
- when
搜索结果
您可以通过将 execute
方法链接到构建器来检索搜索结果
$searchResult = Book::searchQuery($query)->execute();
$searchResult
提供对匹配的命中、模型、文档等内容的轻松访问
$hits = $searchResult->hits(); $models = $searchResult->models(); $documents = $searchResult->documents(); $highlights = $searchResult->highlights();
您可以在此页面上了解更多关于 $searchResult
对象的信息,并学习如何对搜索结果进行分页。
自定义路由
如果您想为您的模型使用 自定义分片路由,请覆盖 shardRouting
方法
class Book extends Model { use ElasticScoutDriverPlus\Searchable; public function shardRouting() { return $this->user->id; } }
自定义路由会自动应用于所有索引和删除操作。
预加载关系
有时您需要使用相关数据对模型进行索引
class Book extends Model { use ElasticScoutDriverPlus\Searchable; public function toSearchableArray() { return [ 'title' => $this->title, 'price' => $this->price, 'author' => $this->author->only(['name', 'phone_number']), ]; } }
您可以通过重写 searchableWith
方法来提高批量操作的性能
class Book extends Model { use ElasticScoutDriverPlus\Searchable; public function toSearchableArray() { return [ 'title' => $this->title, 'price' => $this->price, 'author' => $this->author->only(['name', 'phone_number']), ]; } public function searchableWith() { return ['author']; } }
如果您正在寻找一种为匹配搜索查询的模型预加载关系的方法,请查看构建器的 load
方法文档。