The official PHP OpenSearch client integrated with Laravel
friendsofcat/opensearch-client is a Laravel package for the official php opensearch client integrated with laravel.
It currently has 7 GitHub stars and 481.023 downloads on Packagist (latest version 2.0.0).
Install it with composer require friendsofcat/opensearch-client.
Discover more Laravel packages by friendsofcat
or browse all Laravel packages to compare alternatives.
Last updated
The official PHP OpenSearch client integrated with Laravel.
The current version of OpenSearch Client has been tested with the following configuration:
The library can be installed via Composer:
composer require friendsofcat/opensearch-client
To change the client settings you need to publish the configuration file first:
php artisan vendor:publish --provider="OpenSearch\Laravel\Client\ServiceProvider"
In the newly created config/opensearch.client.php file you can define the default connection name.
return [
'default' => env('OPENSEARCH_CONNECTION', 'default'),
'connections' => [
'default' => [
'hosts' => [
env('OPENSEARCH_HOST', 'localhost:9200'),
],
// you can also set HTTP client options (which is Guzzle by default) as follows
'httpClientOptions' => [
'timeout' => 2,
],
],
],
];
If you need more control over the client creation, you can create your own client builder:
// see OpenSearch\Laravel\Client\ClientBuilder for the reference
class MyClientBuilder implements OpenSearch\Laravel\Client\ClientBuilderInterface
{
public function default(): Client
{
// should return a client instance for the default connection
}
public function connection(string $name): Client
{
// should return a client instance for the connection with the given name
}
}
Do not forget to register the builder in your application service provider:
class MyAppServiceProvider extends Illuminate\Support\ServiceProvider
{
public function register()
{
$this->app->singleton(ClientBuilderInterface::class, MyClientBuilder::class);
}
}
Use OpenSearch\Laravel\Client\ClientBuilderInterface to get access to the client instance:
namespace App\Console\Commands;
use OpenSearch\Client;
use OpenSearch\Laravel\Client\ClientBuilderInterface;
use Illuminate\Console\Command;
class CreateIndex extends Command
{
protected $signature = 'create:index {name}';
protected $description = 'Creates an index';
public function handle(ClientBuilderInterface $clientBuilder)
{
// get a client for the default connection
$client = $clientBuilder->default();
// get a client for the connection with name "write"
$client = $clientBuilder->connection('write');
$client->indices()->create([
'index' => $this->argument('name')
]);
}
}