Getting Started
This content is for v1/2. Switch to the latest version for up-to-date documentation.
An OpenSearch Implementation of Laravel’s Eloquent ORM
This package seamlessly integrates OpenSearch functionalities into Laravel’s Eloquent model and query builder, making it feel native to Laravel. This enables you to utilize Eloquent models while leveraging the powerful search and analytics capabilities of OpenSearch.
Interested in the OpenSearch version of this package? Visit Github.
Installation - v1
Laravel 8/9
composer composer require pdphilip/opensearch:~1
Configuration
-
Set up your
.env
with the following OpenSearch settings:OS_HOSTS="http://opensearch:9200"OS_USERNAME=OS_PASSWORD=OS_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 modelOS_SIG_V4_PROVIDER=OS_SIG_V4_REGION=OS_SIG_V4_SERVICE=OS_SSL_CERT=OS_SSL_CERT_PASSWORD=OS_SSL_KEY=OS_SSL_KEY_PASSWORD=OS_OPT_VERIFY_SSL=trueOS_OPT_RETRIES=OS_OPT_SNIFF_ON_START=OS_OPT_PORT_HOST_HEADERS=OS_ERROR_INDEX=For multiple nodes, pass in as comma-separated:
OS_HOSTS="http://opensearch-node1:9200,http://opensearch-node2:9200,http://opensearch-node3:9200" -
In
config/database.php
, add the opensearch connection:'opensearch' => ['driver' => 'opensearch','hosts' => explode(',', env('OS_HOSTS', 'http://localhost:9200')),'basic_auth' => ['username' => env('OS_USERNAME', ''),'password' => env('OS_PASSWORD', ''),],'sig_v4' => ['provider' => env('OS_SIG_V4_PROVIDER'),'region' => env('OS_SIG_V4_REGION'),'service' => env('OS_SIG_V4_SERVICE'),],'ssl' => ['cert' => env('OS_SSL_CERT', ''),'cert_password' => env('OS_SSL_CERT_PASSWORD', ''),'key' => env('OS_SSL_KEY', ''),'key_password' => env('OS_SSL_KEY_PASSWORD', ''),],'index_prefix' => env('OS_INDEX_PREFIX', false),'options' => ['ssl_verification' => env('OS_OPT_VERIFY_SSL', true),'retires' => env('OS_OPT_RETRIES'),'sniff_on_start' => env('OS_OPT_SNIFF_ON_START'),'port_in_host_header' => env('OS_OPT_PORT_HOST_HEADERS'),],'error_log_index' => env('OS_ERROR_INDEX', false),], -
If packages are not autoloaded, add the service provider: For Laravel 10 and below:
config/app.php 'providers' => [......PDPhilip\OpenSearch\ElasticServiceProvider::class,...For Laravel 11 & 12:
bootstrap/providers.php <?phpreturn [App\Providers\AppServiceProvider::class,PDPhilip\OpenSearch\ElasticServiceProvider::class,];
This setup prepares you to fully utilize OpenSearch within Laravel, treating it as an integral part of the framework.
Package versions
Laravel Version | Command | Maintenance |
---|---|---|
Laravel 10/11/12 | composer require pdphilip/opensearch | ✅ Active |
Laravel 10 & 11 (v2) | composer require pdphilip/opensearch:~2 | ❌ EOL |
Laravel 8 & 9 | composer require pdphilip/opensearch:~1 | ❌ EOL |