An easiest way to use the official ManticoreSearch client in your Laravel or Lumen applications.
composer require evilfreelancer/laravel-manticoresearch
The package's service provider will automatically register its service provider.
Publish the configuration file:
php artisan vendor:publish --provider="ManticoreSearch\Laravel\ServiceProvider"
After you publish the configuration file as suggested above, you may configure ManticoreSearch by adding the following
to your application's .env
file (with appropriate values):
MANTICORESEARCH_HOST=localhost
MANTICORESEARCH_PORT=9200
MANTICORESEARCH_TRANSPORT=Http
MANTICORESEARCH_USER=
MANTICORESEARCH_PASS=
Name | Default value | Description |
---|---|---|
MANTICORESEARCH_CONNECTION | default | Name of default connection |
MANTICORESEARCH_HOST | localhost | Address of host with Manticore server |
MANTICORESEARCH_PORT | 9308 | Port number with REST server |
MANTICORESEARCH_TRANSPORT | Http | Type of transport, can be: Http, Https, PhpHttp or your custom driver |
MANTICORESEARCH_USER | Username | |
MANTICORESEARCH_PASS | Password | |
MANTICORESEARCH_TIMEOUT | 5 | Timeout between requests |
MANTICORESEARCH_CONNECTION_TIMEOUT | 1 | Timeout before connection |
MANTICORESEARCH_PROXY | Url of HTTP proxy server | |
MANTICORESEARCH_PERSISTENT | true | Define whenever connection is persistent or not |
MANTICORESEARCH_RETRIES | 2 | Amount of retries if connection is lost |
If you work with Lumen, please register the service provider and configuration in bootstrap/app.php
:
// Enable shortname of facade
$app->withFacades(true, [
'ManticoreSearch\Laravel\Facade' => 'Facade',
]);
// Register Config Files
$app->configure('manticoresearch');
// Register Service Providers
$app->register(ManticoreSearch\Laravel\ServiceProvider::class);
Manually copy the configuration file to your application.
The ManticoreSearch
facade is just an entry point into
the ManticoreSearch client, so previously you might have
used:
require_once __DIR__ . '/vendor/autoload.php';
$config = ['host'=>'127.0.0.1', 'port'=>9308];
$client = new \Manticoresearch\Client($config);
$index = new \Manticoresearch\Index($client);
$index->setName('movies');
Instead of these few lines above you can use single line solution:
$index = \ManticoreSearch::index('movies');
That will run the command on the default connection. You can run a command on any connection (see the defaultConnection setting and connections array in the configuration file).
$index = \ManticoreSearch::connection('connectionName')->index($nameOfIndex);
$pq = \ManticoreSearch::connection('connectionName')->pq();
$cluster = \ManticoreSearch::connection('connectionName')->cluster();
$indices = \ManticoreSearch::connection('connectionName')->indices();
$nodes = \ManticoreSearch::connection('connectionName')->nodes();
// etc...
methods of the Client class:
\ManticoreSearch::connection('connectionName')->sql($params);
\ManticoreSearch::connection('connectionName')->replace($params);
\ManticoreSearch::connection('connectionName')->delete($params);
// etc...
Lumen users who aren't using facades will need to use dependency injection, or the application container in order to get the ManticoreSearch Index object:
// using injection:
public function handle(\ManticoreSearch\Laravel\Manager $manticoresearch)
{
$manticoresearch->describe();
}
// using application container:
$manticoreSearch = $this->app('manticoresearch');
Of course, dependency injection and the application container work for Laravel applications as well.
Since the PHP client of the ManticoreSearch supports logging through PSR-compatible loggers, you can use them in the same way as presented in the official documentation.
For example, you want to use the Monolog logger.
composer require monolog/monolog
By default, you need to write something like this:
$logger = new \Monolog\Logger('name');
$logger->pushHandler(new \Monolog\Handler\StreamHandler('/my/log.file', Logger::INFO));
$config = ['host' => '127.0.0.1', 'port' => 9306];
$client = new \Manticoresearch\Client($config, $logger);
$index = new \Manticoresearch\Index($client);
$index->setName('movies');
But if you want to use the Monolog together with this library then you may simplify your code like this:
$logger = new \Monolog\Logger('name');
$logger->pushHandler(new \Monolog\Handler\StreamHandler('/my/log.file', Logger::INFO));
$index = \ManticoreSearch::connection('connectionName', $logger)->index('movies');
Just install dev requirements composer install --dev
, then execute following command from root of this library:
./vendor/bin/phpunit