whoami7 - Manager
:
/
home
/
qbizpnmr
/
arif.umairtax.com
/
vendor
/
babenkoivan
/
elastic-client
/
Upload File:
files >> /home/qbizpnmr/arif.umairtax.com/vendor/babenkoivan/elastic-client/README.md
# Elastic Client [](https://packagist.org/packages/babenkoivan/elastic-client) [](https://packagist.org/packages/babenkoivan/elastic-client) [](https://packagist.org/packages/babenkoivan/elastic-client) [](https://github.com/babenkoivan/elastic-client/actions?query=workflow%3ATests) [](https://github.com/babenkoivan/elastic-client/actions?query=workflow%3A%22Code+style%22) [](https://github.com/babenkoivan/elastic-client/actions?query=workflow%3A%22Static+analysis%22) [](https://paypal.me/babenkoi) <p align="center"> <a href="https://ko-fi.com/ivanbabenko" target="_blank"><img src="https://ko-fi.com/img/githubbutton_sm.svg" alt="Support the project!"></a> </p> --- The official PHP Elasticsearch client integrated with Laravel. ## Contents * [Compatibility](#compatibility) * [Installation](#installation) * [Configuration](#configuration) * [Usage](#usage) ## Compatibility The current version of Elastic Client has been tested with the following configuration: * PHP 8.2 * Elasticsearch 8.x * Laravel 11.x If your project uses older Laravel (or PHP) version check [the previous major version](https://github.com/babenkoivan/elastic-client/tree/v2.1.0#compatibility) of the package. ## Installation The library can be installed via Composer: ```bash composer require babenkoivan/elastic-client ``` ## Configuration To change the client settings you need to publish the configuration file first: ```bash php artisan vendor:publish --provider="Elastic\Client\ServiceProvider" ``` In the newly created `config/elastic.client.php` file you can define the default connection name and describe multiple connections using configuration hashes. You can read more about building the client from a configuration hash [here](https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/node_pool.html#config-hash). ```php return [ 'default' => env('ELASTIC_CONNECTION', 'default'), 'connections' => [ 'default' => [ 'hosts' => [ env('ELASTIC_HOST', 'localhost:9200'), ], // configure basic authentication 'basicAuthentication' => [ env('ELASTIC_USERNAME'), env('ELASTIC_PASSWORD'), ], // configure HTTP client (Guzzle by default) 'httpClientOptions' => [ 'timeout' => 2, ], ], ], ]; ``` If you need more control over the client creation, you can create your own client builder: ```php use Elastic\Elasticsearch\ClientInterface; use Elastic\Client\ClientBuilderInterface; class MyClientBuilder implements ClientBuilderInterface { public function default(): ClientInterface { // should return a client instance for the default connection } public function connection(string $name): ClientInterface { // should return a client instance for the connection with the given name } } ``` Do not forget to register the builder in your application service provider: ```php class MyAppServiceProvider extends Illuminate\Support\ServiceProvider { public function register() { $this->app->singleton(ClientBuilderInterface::class, MyClientBuilder::class); } } ``` ## Usage Use `Elastic\Client\ClientBuilderInterface` to get access to the client instance: ```php namespace App\Console\Commands; use Elastic\Elasticsearch\ClientInterface; use Elastic\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') ]); } } ```
Copyright ©2021 || Defacer Indonesia