pdphilip / elasticsearch
Laravel Eloquent ORM 的 Elasticsearch 实现
v4.3.0
2024-09-23 12:36 UTC
Requires
- php: ^8.2
- elasticsearch/elasticsearch: ^8.15
- illuminate/container: ^10.0|^11.0
- illuminate/database: ^10.0|^11.0
- illuminate/events: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- doctrine/coding-standard: 12.0.x-dev
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- mockery/mockery: ^1.4.4
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^3
- pestphp/pest-plugin-arch: ^3
- pestphp/pest-plugin-laravel: ^3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- dev-main
- v4.3.0
- v4.2.0
- v4.1.1
- v4.1.0
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.11.0
- 3.10.x-dev
- v3.10.0
- 3.9.x-dev
- v3.9.4
- v3.9.3
- v3.9.2
- v3.9.1
- v3.9.0
- 3.8.x-dev
- v3.8.4
- v3.8.3
- v3.8.2
- v3.8.1
- v3.8.0
- v2.10.7
- v2.10.6
- v2.10.5
- v2.10.4
- v2.10.3
- v2.10.2
- v2.10.1
- v2.10.0
- 2.9.x-dev
- v2.9.9
- v2.9.8
- v2.9.7
- v2.9.6
- v2.9.5
- v2.9.4
- v2.9.3
- v2.9.2
- v2.9.1
- v2.9.0
- 2.8.x-dev
- v2.8.7
- v2.8.6
- v2.8.5
- v2.8.4
- v2.8.3
- v2.8.2
- v2.8.1
- v2.8.0
- 2.7.x-dev
- v2.7.7
- v2.7.6
- v2.7.5
- v2.7.4
- v2.7.3
- v2.7.2
- v2.7.1
- v2.7.0
- 2.6.x-dev
- v2.6.4
- v2.6.3
- v2.6.2
- v2.6.1
- v2.6.0
- 1.9.x-dev
- v1.9.3
- v1.9.2
- v1.9.1
- v1.9.0
- 1.8.x-dev
- v1.8.2
- v1.8.1
- v1.8.0
- 1.7.x-dev
- v1.7.1
- v1.7.0
- 1.6.x-dev
- v1.6.2
- v1.6.1
- v1.6.0
- v0.9.2
- v0.9.1
- 0.8.x-dev
- v0.8.2
- v0.8.1
- v0.8-alpha
- 0.7.x-dev
- v0.7.2
- v0.7.1
- v0.7-alpha
- 0.6.x-dev
- v0.6.2
- v0.6.1
- v0.6-alpha
- dev-dev-main
- dev-github-actions
- dev-collection-exp
- dev-dev-l9
- dev-dev-l8
This package is auto-updated.
Last update: 2024-09-23 12:59:41 UTC
README
Laravel-Elasticsearch
Laravel-Elasticsearch: Laravel Eloquent ORM 的 Elasticsearch 实现
此包扩展了 Laravel 的 Eloquent 模型和查询构建器,无缝集成 Elasticsearch 功能。设计上感觉像是 Laravel 的原生功能,此包使您能够在使用 Eloquent 模型的同时利用 Elasticsearch 强大的搜索和分析功能。
示例
$logs = UserLog::where('created_at','>=',Carbon::now()->subDays(30))->get();
$updates = UserLog::where('status', 1)->update(['status' => 4]);
$updates = UserLog::where('status', 1)->paginate(50);
$profiles = UserProfile::whereIn('country_code',['US','CA'])->orderByDesc('last_login')->take(10)->get();
$deleted = UserProfile::where('state','unsubscribed')->where('updated_at','<=',Carbon::now()->subDays(90))->delete();
$search = UserProfile::phrase('loves espressos')->highlight()->search();
阅读文档
使用OpenSearch? Github
包测试
安装
维护版本 (Elasticsearch 8.x)
Laravel 10.x & 11.x (主要)
composer require pdphilip/elasticsearch
未维护版本 (Elasticsearch 8.x)
未维护版本 (Elasticsearch 7.x)
配置
- 使用以下 Elasticsearch 设置设置
.env
ES_AUTH_TYPE=http ES_HOSTS="https://:9200" ES_USERNAME= ES_PASSWORD= ES_CLOUD_ID= ES_API_ID= ES_API_KEY= ES_SSL_CA= ES_INDEX_PREFIX=my_app # prefix will be added to all indexes created by the package with an underscore # ex: my_app_user_logs for UserLog.php model ES_SSL_CERT= ES_SSL_CERT_PASSWORD= ES_SSL_KEY= ES_SSL_KEY_PASSWORD= # Options ES_OPT_ID_SORTABLE=false ES_OPT_VERIFY_SSL=true ES_OPT_RETRIES= ES_OPT_META_HEADERS=true ES_ERROR_INDEX=
对于多个节点,以逗号分隔传入
ES_HOSTS="http://es01:9200,http://es02:9200,http://es03:9200"
示例云配置 .env: (点击展开)
ES_AUTH_TYPE=cloud ES_HOSTS="https://xxxxx-xxxxxx.es.europe-west1.gcp.cloud.es.io:9243" ES_USERNAME=elastic ES_PASSWORD=XXXXXXXXXXXXXXXXXXXX ES_CLOUD_ID=XXXXX:ZXVyb3BlLXdl.........SQwYzM1YzU5ODI5MTE0NjQ3YmEyNDZlYWUzOGNkN2Q1Yg== ES_API_ID= ES_API_KEY= ES_SSL_CA= ES_INDEX_PREFIX=my_app ES_ERROR_INDEX=
- 在
config/database.php
中添加 Elasticsearch 连接
'elasticsearch' => [ 'driver' => 'elasticsearch', 'auth_type' => env('ES_AUTH_TYPE', 'http'), //http or cloud 'hosts' => explode(',', env('ES_HOSTS', 'https://:9200')), 'username' => env('ES_USERNAME', ''), 'password' => env('ES_PASSWORD', ''), 'cloud_id' => env('ES_CLOUD_ID', ''), 'api_id' => env('ES_API_ID', ''), 'api_key' => env('ES_API_KEY', ''), 'ssl_cert' => env('ES_SSL_CA', ''), 'ssl' => [ 'cert' => env('ES_SSL_CERT', ''), 'cert_password' => env('ES_SSL_CERT_PASSWORD', ''), 'key' => env('ES_SSL_KEY', ''), 'key_password' => env('ES_SSL_KEY_PASSWORD', ''), ], 'index_prefix' => env('ES_INDEX_PREFIX', false), 'options' => [ 'allow_id_sort' => env('ES_OPT_ID_SORTABLE', false), 'ssl_verification' => env('ES_OPT_VERIFY_SSL', true), 'retires' => env('ES_OPT_RETRIES', null), 'meta_header' => env('ES_OPT_META_HEADERS', true), ], 'error_log_index' => env('ES_ERROR_INDEX', false), //If set will log ES errors to this index, ex: 'laravel_es_errors' ],
3. 如果包未自动加载,请添加服务提供程序
对于 Laravel 11
//bootstrap/providers.php <?php return [ App\Providers\AppServiceProvider::class, PDPhilip\Elasticsearch\ElasticServiceProvider::class, ];
对于 Laravel 10 及以下版本
//config/app.php 'providers' => [ ... ... PDPhilip\Elasticsearch\ElasticServiceProvider::class, ...
现在,您已经准备好使用 Laravel 作为框架的本地功能来使用 Elasticsearch。
文档链接
入门
Eloquent
关系
模式/索引
杂项
版本 4 中的新功能
(以及 3.9.1/3.8.1)
版本 3 中的新功能
嵌套查询 (查看)
新的 Where
子句
排序增强
- 使用 ES 功能排序: 包括排序字段的模式和缺失值。
- 按地理距离排序
保存更新
分组查询
- 分组查询:可以将查询分组,允许在单个查询块内嵌套多个条件。