ElasticsearchDSL

Introducing Elasticsearch DSL library to provide objective query builder for Elasticsearch bundle and elasticsearch-php client. You can easily build any Elasticsearch query and transform it to an array.

If you need any help, stack overflow is the preffered and recommended way to ask ONGR support questions.

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

Version matrix

Elasticsearch version ElasticsearchDSL version
>= 5.0 >= 5.0
>= 2.0, < 5.0 >= 2.0, < 5.0
>= 1.0, < 2.0 1.x
<= 0.90.x 0.x

Documentation

The latest library online documentation of the bundle is here. If you need 2.x docs you can find it in the github branch here.

Try it!

Installation

Install library with composer:

$ composer require ongr/elasticsearch-dsl

elasticsearch-php client is defined in the composer requirements, no need to install it.

Search

Elasticsearch DSL was extracted from Elasticsearch Bundle to provide standalone query dsl for elasticsearch-php. Examples how to use it together with Elasticsearch Bundle can be found in the Elasticsearch Bundle docs.

If you dont want to use Symfony or Elasticsearch bundle, no worries, you can use it in any project together with elasticsearch-php. Here's the example:

If you are using Symfony there is also the ElasticsearchBundle which provides full integration with Elasticsearch DSL.

The library is standalone and is not coupled with any framework. You can use it in any PHP project, the only requirement is composer. Here's the example:

Create search:

 <?php
  require 'vendor/autoload.php'; //Composer autoload
  
  $client = ClientBuilder::create()->build(); //elasticsearch-php client
  
  $matchAll = new ONGR\ElasticsearchDSL\Query\MatchAllQuery();
  
  $search = new ONGR\ElasticsearchDSL\Search();
  $search->addQuery($matchAll);
  
  $params = [
    'index' => 'your_index',
    'body' => $search->toArray(),
  ];
  
  $results = $client->search($params);

Elasticsearch DSL covers every elasticsearch query, all examples can be found in the documentation