An objective query builder for Elasticsearch

v1.0.0 2020-03-16 23:49 UTC

This package is auto-updated.

Last update: 2020-05-17 00:13:35 UTC


Release Build Status Code Quality Code Coverage Packagist

The olvlvl/elasticsearch-dsl package provides an objective query builder for Elasticsearch. It helps you create Elasticsearch queries using the same language as you would use writing arrays by hand.

I created this library because I found using ongr-io/ElasticsearchDSL, the only other available option, very cumbersome, and I wanted an interface that would feel more natural regarding Elasticsearch language.

I've been working on this library since January, it's far from being feature complete, but I'm getting there :) If you'd like to help please submit a PR.

A simple example

Here is a simple example, take from Elasticsearch documentation. More are available in our documentation.

    "query": {
        "bool": {
            "must": [
                { "match": { "title": "Search" } },
                { "match": { "content": "Elasticsearch" } }
            "filter": [
                { "term": { "status": "published" } },
                { "range": { "publish_date": { "gte": "2015-01-01" } } }

use olvlvl\ElasticsearchDSL\Query;

$query = new Query;
    ->match('title', "Search")
    ->match('content', "Elasticsearch");
    ->term('status', 'published')
    ->range('publish_date', function (Query\Term\RangeQuery $range) {

See more examples


The package requires PHP 7.1 or later.


The recommended way to install this package is through Composer:

$ composer require olvlvl/elasticsearch-dsl

Cloning the repository

The package is available on GitHub, its repository can be cloned with the following command line:

$ git clone https://github.com/olvlvl/elasticsearch-dsl.git


You can generate the documentation for the package and its dependencies with the make doc command. The documentation is generated in the build/docs directory. ApiGen is required. The directory can later be cleaned with the make clean command.


The test suite is ran with the make test command. PHPUnit and Composer need to be globally available to run the suite. The command installs dependencies as required. The make test-coverage command runs test suite and also creates an HTML coverage report in build/coverage. The directory can later be cleaned with the make clean command.

The package is continuously tested by Travis CI.

Build Status Code Coverage


olvlvl/elasticsearch-dsl is licensed under the New BSD License - See the LICENSE file for details.