An objective query builder for Elasticsearch
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
lib
tests
.editorconfig
.gitignore
.travis.yml
LICENSE
Makefile
README.md
composer.json
phpunit.xml

README.md

ElasticsearchDSL

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" } } }
            ]
        }
    }
}
<?php

use olvlvl\ElasticsearchDSL\Query;

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

See more examples


Requirements

The package requires PHP 7.1 or later.

Installation

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

Documentation

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.

Testing

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

License

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