zing/laravel-scout-opensearch

Laravel Scout custom engine for OpenSearch

3.4.1 2024-04-09 17:05 UTC

README

Build Status Code Coverage Latest Stable Version Total Downloads Latest Unstable Version License

Requires PHP 8.0+

Require Laravel Scout OpenSearch using Composer:

composer require zing/laravel-scout-opensearch

Configuration

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(),
        ];
    }
}

Configuration for Amazon OpenSearch Service

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'),
        ],
    ],
];

Debug and logging

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')),
    ],
];

License

Laravel Scout OpenSearch is an open-sourced software licensed under the MIT license.