Requires PHP 8.0+
Require Laravel Scout OpenSearch using Composer:
composer require zing/laravel-scout-opensearch
return [
// ...
'opensearch' => [
'hosts' => [env('OPENSEARCH_HOST', 'localhost:9200')],
'basicAuthentication' => [env('OPENSEARCH_USERNAME', 'admin'), env('OPENSEARCH_PASSWORD', 'admin')],
'retries' => env('OPENSEARCH_RETRYS', 2),
],
];
Set app name and table name for model
class SearchableModel extends Model
{
use Searchable;
public function searchableAs(): string
{
return 'searchable_models_index';
}
/**
* @return array{id: mixed}
*/
public function toSearchableArray(): array
{
return [
'id' => $this->getScoutKey(),
];
}
}
return [
// ...
'opensearch' => [
'hosts' => [env('OPENSEARCH_HOST', 'localhost:9200')],
'basicAuthentication' => [env('OPENSEARCH_USERNAME', 'admin'), env('OPENSEARCH_PASSWORD', 'admin')],
'retries' => env('OPENSEARCH_RETRYS', 2),
'sigV4Region' => env('OPENSEARCH_REGION', 'us-east-1') ,
'sigV4Service' => env('OPENSEARCH_SERVICE', 'es') ,
'sigV4CredentialProvider' => [
'key' => env('OPENSEARCH_IAM_KEY'),
'secret' => env('OPENSEARCH_IAM_SECRET'),
],
],
];
return [
// ...
'opensearch' => [
'hosts' => [env('OPENSEARCH_HOST', 'localhost:9200')],
'basicAuthentication' => [env('OPENSEARCH_USERNAME', 'admin'), env('OPENSEARCH_PASSWORD', 'admin')],
'retries' => env('OPENSEARCH_RETRYS', 2),
'logger' => (new \Monolog\Logger('opensearch'))->pushHandler(new \Monolog\Handler\RotatingFileHandler('opensearch.log')),
'tracer' => (new \Monolog\Logger('opensearch'))->pushHandler(new \Monolog\Handler\RotatingFileHandler('opensearch.log')),
],
];
Laravel Scout OpenSearch is an open-sourced software licensed under the MIT license.