Symfony bundle for elasticsearch with steroids
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.github fix miss type Sep 13, 2016
Annotation added object nested class deprecation May 2, 2018
Collection Make ObjectIterator compatible with Doctrine Collections (#777) Mar 22, 2018
Command Add visibility property when generating a document. (#784) Apr 14, 2017
DependencyInjection Separate dir mapping fix (#765) Mar 17, 2017
Event read analysis configuration from document annotations Dec 12, 2016
EventListener Force commit to elasticsearch for each manager Apr 4, 2016
Exception Fixed namespace in DocumentParserException (#722) Dec 12, 2016
Generator Add visibility property when generating a document. (#784) Apr 14, 2017
Mapping Fix usage of fields as reference (#826) Mar 22, 2018
Profiler Upgrades (#821) Nov 8, 2017
Resources Merge branch '5.0' Apr 13, 2018
Result datetime microseconds fix Mar 22, 2018
Service Resolve $types parameters (#800) Mar 22, 2018
Test Removing deprecations (#718) Nov 20, 2016
Tests Inherited document test Mar 22, 2018
.coveralls.yml upgraded coveralls dependency Dec 31, 2015
.gitignore added coverage files to gitignore Mar 24, 2015
.scrutinizer.yml added code tests coverage export to the coveralls 👕 Oct 6, 2015
.travis.yml upgrade travis (#837) Mar 22, 2018 Updated Documentation for v5.x (#762) Mar 14, 2017
LICENSE Update copyright year Jan 13, 2016
ONGRElasticsearchBundle.php implemented the display of ongr_es performance in Symfony profiler Aug 29, 2016 Update Mar 17, 2017
composer.json Merge branch 'issue-427' of git://… Mar 22, 2018
phpunit.xml.dist added coverage files to gitignore Mar 24, 2015

ONGR Elasticsearch Bundle

Elasticsearch Bundle was created in order to serve the need for professional Elasticsearch integration with enterprise level Symfony applications. This bundle is:

  • Supported by development team.
  • Uses the official elasticsearch-php client.
  • Ensures full integration with Symfony framework.

Technical goodies:

  • Provides interactive Document object generator via CLI (ongr:es:document:generate)
  • Provides DSL query builder to be executed by type repository services.
  • Uses Doctrine-like documents(entities) document-object mapping using annotations.
  • Query results iterators are provided for your convenience.
  • Console CLI commands for index and types management and data import / export.
  • Profiler that integrates in the Symfony debug bar and shows all executed queries.
  • Designed in an extensible way for all your custom needs.

If you need any help, stack overflow is the preferred and recommended way to ask questions about ONGR bundles and libraries.

Build Status Coverage Status Latest Stable Version Total Downloads Scrutinizer Code Quality

Version matrix

Elasticsearch version ElasticsearchBundle version
>= 5.0 ~5.x
>= 2.0, < 5.0 >=1.0, < 5.0
>= 1.0, < 2.0 >= 0.10, < 1.0
<= 0.90.x < 0.10


The online documentation of the bundle can be found in Docs source is stored within the repo under Resources/doc/, so if you see a typo or problem, please submit a PR to fix it!

For contribution to the documentation you can find it in the contribute topic.


Setup the bundle

Step 1: Install Elasticsearch bundle

Elasticsearch bundle is installed using Composer.

php composer.phar require ongr/elasticsearch-bundle "~5.0"

Instructions for installing and deploying Elasticsearch can be found in Elasticsearch installation page.

Enable Elasticsearch bundle in your AppKernel:

// app/AppKernel.php

public function registerBundles()
    $bundles = [
        // ...
        new ONGR\ElasticsearchBundle\ONGRElasticsearchBundle(),
    // ...

Step 2: Add configuration

Add minimal configuration for Elasticsearch bundle.

# app/config/config.yml

                index_name: acme
                - AppBundle

This is the very basic example only, for more information, please take a look at the configuration chapter.

In this particular example there are 2 things you should know. The index name in the index node and the mappings. Mappings is the place where your documents are stored (more info at the mapping chapter).

Step 3: Define your Elasticsearch types as Document objects

This bundle uses objects to represent Elasticsearch documents. Lets create a Customer class for customer document.

// src/AppBundle/Document/Customer.php

namespace AppBundle\Document;

use ONGR\ElasticsearchBundle\Annotation as ES;

 * @ES\Document()
class Customer
     * @var string
     * @ES\Id()
    public $id;

     * @var string
     * @ES\Property(type="text")
    public $name;

This is the basic example only, for more information about mapping, please take a look at the the mapping chapter.

Step 4: Create index and mappings

Elasticsearch bundle provides several CLI commands. One of them is for creating index, run command in your terminal:

bin/console ongr:es:index:create

More info about the rest of the commands can be found in the commands chapter.

Step 5: Enjoy with the Elasticsearch

We advise to take a look at the mapping chapter to configure the index. Search documentation for the Elasticsearch bundle is available here. And finally it's up to you what amazing things you are going to create 😎 .



This bundle is licensed under the MIT license. Please, see the complete license in the bundle LICENSE file.