- dev-master / 3.2.x-dev
The perfect starting point to integrate Algolia within your Symfony project
- Compatible with Symfony 3.4 LTS and Symfony 4.0 (and later).
- Simple: You can get started with only 5 lines of YAML
- Extensible: It lets you easily replace services by implementing Interfaces
- Standard: It leverages Normalizers to convert entities for indexing
- Dev-friendly: It lets you disable HTTP calls easily (while running tests, for example)
- Future-ready: It lets you unsubscribe from doctrine events easily to use a messaging/queue system.
First, install Algolia Search Bundle Integration via the composer package manager:
composer require algolia/search-bundle
You will also need to provide the Algolia App ID and Admin API key. By default, they
are loaded from environment variables
If you use
.env config file, you can set them there.
If you don't use environment variables, you can set them in your
parameters: env(ALGOLIA_APP_ID): XXXXXXXXXX env(ALGOLIA_API_KEY): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
First, we need to define which entities should be indexed in Algolia.
Each entry under the
indices config key must contain at least the 2 following attributes:
nameis the canonical name of the index in Algolia
classis the full name of the entity to index
algolia_search: indices: - name: posts class: App\Entity\Post
indices config is ready, you can use the built-in console command
to batch import all existing data.
# Import all indices php bin/console search:import # Choose what indices to reindex by passing the index name php bin/console search:import --indices=posts,comments
Before re-indexing everything, you may want to clear the index first, see how to remove data.
In this example we'll search for posts. The
search method will query Algolia
to get matching results and then will create a doctrine collection. The data are
pulled from the database (that's why you need to pass the Doctrine Manager).
Notice that I use
$this->indexManager here because your IndexManager must be
injected in your class. Read how to inject the IndexManager here.
$em = $this->getDoctrine()->getManagerForClass(Post::class); $posts = $this->indexManager->search('query', Post::class, $em);
For full documentation, visit the Algolia Symfony Search Bundle.
Algolia Symfony Search Bundle is an open-sourced software licensed under the MIT license.