m6web / elasticsearch-bundle
Symfony2 Bundle on top of elasticsearch/elasticsearch-php
Installs: 590 539
Dependents: 2
Suggesters: 0
Security: 0
Stars: 22
Watchers: 51
Forks: 19
Open Issues: 3
Type:symfony-bundle
Requires
- php: >=7.4
- ext-json: *
- elasticsearch/elasticsearch: ^5.1.0||^6.0.0||^7.0
- symfony/config: ^4.4||^5.0||^6.0
- symfony/dependency-injection: ^4.4||^5.0||^6.0
- symfony/event-dispatcher: ^4.4||^5.0||^6.0
- symfony/http-foundation: ^4.4||^5.0||^6.0
- symfony/http-kernel: ^4.4||^5.0||^6.0
- symfony/yaml: ^4.4||^5.0||^6.0
Requires (Dev)
- atoum/atoum: ^4.0
- m6web/php-cs-fixer-config: ^2.0
README
Integration of the Elasticsearch official PHP client within a Symfony Project.
Features
This bundle creates one or more Elasticsearch client services from settings defined in the application configuration.
Usage
Installation
You must first add the bundle to your composer.json
:
"require": { "m6web/elasticsearch-bundle": "dev-master" }
Then register the bundle in your AppKernel
class:
<?php public function registerBundles() { $bundles = array( // ... new M6Web\Bundle\ElasticsearchBundle\M6WebElasticsearchBundle(), ); // ... }
Configuration
In your config.yml
, you can configure one or more Elasticsearch clients:
m6web_elasticsearch: default_client: my_client clients: my_client: hosts: - 'localhost:9200' - 'http://other_host:9201' my_other_client: hosts: - 'other_server:9200'
From this configuration, the bundle will create two services :
m6web_elasticsearch.client.my_client
that will connect to two Elasticsearch instances:localhost
on port 9200 andother_host
on port 9201m6web_elasticsearch.client.my_other_client
that will connect to one Elasticsearch instances:other_server
on port 9200
It will also create m6web_elasticsearch.client.default
which is an alias for m6web_elasticsearch.client.my_client
Additional configuration
Each client can have additional configuration parameters that will be used to instantiate the \Elasticsearch\Client
. Ex:
m6web_elasticsearch: clients: my_client: hosts: - 'https://username:password@localhost:9200' headers: 'Accept-Encoding': ['gzip'] retries: 2 logger: monolog.logger.custom connectionPoolClass: '\Elasticsearch\ConnectionPool\StaticConnectionPool' selectorClass: '\Elasticsearch\ConnectionPool\Selectors\RandomSelector' connectionParams: client: timeout: 3 connect_timeout: 1
Events
The bundle dispatches \M6Web\Bundle\ElasticsearchBundle\EventDispatcher\ElasticsearchEvent
events containing various information about the Elasticsearch requests.
Events are fired with the name m6web.elasticsearch
.
Tests
You can launch the unit tests using:
./vendor/bin/atoum
License
ElasticsearchBundle is licensed under the MIT license.