elastification / php-client-bundle
A Elastification client bundle for Symfony2
Installs: 7 966
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.5.0
- elastification/php-client: >=0.9,<1.0
- symfony/framework-bundle: ~2.3|~3.0
- symfony/yaml: ~2.3|~3.0
Requires (Dev)
- guzzlehttp/guzzle: >=6.0,<=7.0
- jms/serializer: ~0.15
- munkie/elasticsearch-thrift-php: ~1.4
- phpunit/phpunit: ~4.1
Suggests
- guzzlehttp/guzzle: Needed for HttpGuzzle transport
- jms/serializer: Needed for serialization of entities
- munkie/elasticsearch-thrift-php: Needed for thrift transport
README
Config
Here is the configuration section for using the bundle
Composer
Required in composer.json
"elastification/php-client-bundle": "<1.0"
You have choose the right package for your transport. If you do not have installed thrift you should use guzzle
"guzzlehttp/guzzle": "<7.0"
For Thrift transport
"munkie/elasticsearch-thrift-php": "~1.4"
Don't forget to run composer update after you finished your composer.json
AppKernel
In your app/config/AppHernel.php file you should activate the bundle by adding it to the array
$bundles[] = new Elastification\Bundle\ElastificationPhpClientBundle\ElastificationPhpClientBundle();
App Config
In your app/config.yml or environment based you can add params (full config example):
elastification_php_client: host: 127.0.0.1 port: 9200 protocol: http # http/thrift elasticsearch_version: 1.4.1 search_repository_serializer_dic_id: elastification_php_client.serializer.native #default: elastification_php_client.serializer.native index_repository_serializer_dic_id: elastification_php_client.serializer.native #default: elastification_php_client.serializer.native document_repository_serializer_dic_id: elastification_php_client.serializer.native #default: elastification_php_client.serializer.native replace_version_of_tagged_requests: true #default: false logging_enabled: true profiler_enabled: true jms_serializer_class_map: - {index: my-index, type: my-type, class: AppBundle\Entity\MyEntity}
DIC
The registered DIC service id for the client is elastification_php_client
Serializers
Native Serializer Service Id: elastification_php_client.serializer.native
Jms Serializer Search Service Id: elastification_php_client.serializer.jms.search
Jms Serializer Document Service Id: elastification_php_client.serializer.jms.document
Repositories
Document Repository Serivce Id: elastification_php_client.repository.document
Search Repository Serivce Id: elastification_php_client.repository.search
Index Repository Serivce Id: elastification_php_client.repository.index
Cat Repository Serivce Id: elastification_php_client.repository.cat
Tagged request
If you want to register request services you can tag them with: elastification_php_client.request
Versions
HowTo
Examples
For all examples should create some sample data in your elasticsearch.
Example for Search Repository
Performs a simple search. This code is an example that can be performed within an action of a controller.
/** @var SearchRepositoryInterface $searchRepo */ $searchRepo = $this->get('elastification_php_client.repository.search'); $query = array( 'query' => array( 'term' => array( 'country' => array( 'value' => 'germany' ) ) ) ); $searchRepo->search('my-index', 'my-type', $query); var_dump($response->getHits());
Example for Document Repository
Gets a single document by id. This code is an example that can be performed within an action of a controller.
/** @var DocumentRepositoryInterface $docRepo */ $docRepo = $this->get('elastification_php_client.repository.document'); var_dump($docRepo->get('my-index', 'my-type', 'yourDocumentId'));
Examples for Index Repository
Checks if an index exists This code is an example that can be performed within an action of a controller.
/** @var IndexRepositoryInterface $indexRepo */ $indexRepo = $this->get('elastification_php_client.repository.index'); var_dump($indexRepo->exists('my-index'));
Creates an index This code is an example that can be performed within an action of a controller.`
/** @var IndexRepositoryInterface $indexRepo */ $indexRepo = $this->get('elastification_php_client.repository.index'); var_dump($indexRepo->create('my-index'));
Example for simple search query with native serializer and no preconfigured requests
This code is an example that can be performed within an action of a controller.
/** @var Client $client */ $client = $this->get('elastification_php_client'); $request = new SearchRequest('my-index', 'my-type', new NativeJsonSerializer()); $response = $client->send($request); //get the raw deserialized data var_dump($response->getData()->getGatewayValue()); //for grabbing into the result do: $response->getData()['hits']
Example for tagging request services and using the request manager
Here is an example of a tagged request as service. The id parameter is optional. If this is not set, the request service id will be used. If the config parameter replace_version_of_tagged_requests is set to true. All registered requests will be parsed and set to the configured version.
request.getdocument: class: "Elastification\Client\Request\V090x\GetDocumentRequest"g arguments: ["my-index", "my-type", @elastification_php_client.serializer.native] public: false tags: - { name: elastification_php_client.request, id: get.service.text }
Using a registered request and perform a request. This code is an example that can be performed within an action of a controller.
$request = $client->getRequest('get.service.text'); $request->setId('yourDocumentId'); $response = $client->send($request); var_dump($response->getData()->getGatewayValue());
ToDo
- create version for lib (0.1.0)
- create version for bundle
- [] implement thrift config
- create jms serializer services
- create services for document repository
- create services for search repository
- create jms serializer service if jms serializer is available
- client lib: create jms document entity
- create document jms serializer service
- [] php-client enable/disable response (debug) output ?