PHPackages                             saxulum/saxulum-elasticsearch-querybuilder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. saxulum/saxulum-elasticsearch-querybuilder

AbandonedArchivedLibrary[Search &amp; Filtering](/categories/search)

saxulum/saxulum-elasticsearch-querybuilder
==========================================

A query builder for elasticsearch

3.3.0(7y ago)349.9k1[1 issues](https://github.com/saxulum/saxulum-elasticsearch-querybuilder/issues)1MITPHPPHP ~7.0

Since Jun 12Pushed 7y ago1 watchersCompare

[ Source](https://github.com/saxulum/saxulum-elasticsearch-querybuilder)[ Packagist](https://packagist.org/packages/saxulum/saxulum-elasticsearch-querybuilder)[ RSS](/packages/saxulum-saxulum-elasticsearch-querybuilder/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (1)Versions (27)Used By (1)

saxulum-elasticsearch-querybuilder
==================================

[](#saxulum-elasticsearch-querybuilder)

[![Build Status](https://camo.githubusercontent.com/f31a964275b29e86370cdc229ff2c811e45177983bea4df654987d1eafd8ffb9/68747470733a2f2f6170692e7472617669732d63692e6f72672f736178756c756d2f736178756c756d2d656c61737469637365617263682d71756572796275696c6465722e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/saxulum/saxulum-elasticsearch-querybuilder)[![Total Downloads](https://camo.githubusercontent.com/c70cc3d0b5a1a2f387b8619d35e418a2e5df5601519e932061739d5d3f1ecd42/68747470733a2f2f706f7365722e707567782e6f72672f736178756c756d2f736178756c756d2d656c61737469637365617263682d71756572796275696c6465722f646f776e6c6f6164732e706e67)](https://packagist.org/packages/saxulum/saxulum-elasticsearch-querybuilder)[![Latest Stable Version](https://camo.githubusercontent.com/a5f9824ef82e9373d6a54598511ac678ba779fa453500cf744e8f8485b5a3b10/68747470733a2f2f706f7365722e707567782e6f72672f736178756c756d2f736178756c756d2d656c61737469637365617263682d71756572796275696c6465722f762f737461626c652e706e67)](https://packagist.org/packages/saxulum/saxulum-elasticsearch-querybuilder)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/aceedb2cde24e8a7cf3a7a6fc52830b314f8fe032be7d845869c01fcdf2a2b34/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f736178756c756d2f736178756c756d2d656c61737469637365617263682d71756572796275696c6465722f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/saxulum/saxulum-elasticsearch-querybuilder/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/48170c95ea6f460ecf9bc8a8cafcfe036eea9e557bd5cd87adb241d8ffd8e628/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f736178756c756d2f736178756c756d2d656c61737469637365617263682d71756572796275696c6465722f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/saxulum/saxulum-elasticsearch-querybuilder/?branch=master)

Features
--------

[](#features)

- A simple to use, flexible query builder for elastic search.

Requirements
------------

[](#requirements)

- php: ~7.0

Suggests
--------

[](#suggests)

- saxulum/saxulum-elasticsearch-querybuilder-generator: ~1.0

Installation
------------

[](#installation)

Through [Composer](http://getcomposer.org) as [saxulum/saxulum-elasticsearch-querybuilder](https://packagist.org/packages/saxulum/saxulum-elasticsearch-querybuilder).

```
composer require saxulum/saxulum-elasticsearch-querybuilder "~3.3"
```

Usage
-----

[](#usage)

**Important**: By default empty nodes get not serialized. NullNode forces null value serialization.

- ArrayNode (no elements)
- BoolNode (null)
- ObjectNode (no elements)
- FloatNode (null)
- IntNode (null)
- StringNode (null)

This works recursive, which means theoretically a complex query builder can lead into an empty string as json query.

Check the `allowSerializeEmpty` argument to prevent this if needed.

### QueryBuilder

[](#querybuilder)

```
use Saxulum\ElasticSearchQueryBuilder\Node\ArrayNode;
use Saxulum\ElasticSearchQueryBuilder\Node\FloatNode;
use Saxulum\ElasticSearchQueryBuilder\Node\IntNode;
use Saxulum\ElasticSearchQueryBuilder\Node\ObjectNode;
use Saxulum\ElasticSearchQueryBuilder\Node\StringNode;

$qb = ObjectNode::create()
    ->add('query', ObjectNode::create()
        ->add('bool', ObjectNode::create()
            ->add('must', ObjectNode::create()
                ->add('term', ObjectNode::create()
                    ->add('user', StringNode::create('kimchy'))
                )
            )
            ->add('filter', ObjectNode::create()
                ->add('term', ObjectNode::create()
                    ->add('tag', StringNode::create('tech'))
                )
            )
            ->add('must_not', ObjectNode::create()
                ->add('range', ObjectNode::create()
                    ->add('age', ObjectNode::create()
                        ->add('from', IntNode::create(10))
                        ->add('to', IntNode::create(20))
                    )
                )
            )
            ->add('should', ArrayNode::create()
                ->add(ObjectNode::create()
                    ->add('term', ObjectNode::create()
                        ->add('tag', StringNode::create('wow'))
                    )
                )
                ->add(ObjectNode::create()
                    ->add('term', ObjectNode::create()
                        ->add('tag', StringNode::create('elasticsearch'))
                    )
                )
            )
            ->add('minimum_should_match', IntNode::create(1))
            ->add('boost', FloatNode::create(1.1))
        )
    );

echo $qb->json(true);
```

### Other samples

[](#other-samples)

- [Queries with Node](doc/Node.md)

### Converter

[](#converter)

- [Convert Iteratable to Node](doc/Converter/IteratableToNodeConverter.md)
- [Convert Scalar to Node](doc/Converter/ScalarToNodeConverter.md)

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity28

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 96.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~30 days

Recently: every ~109 days

Total

26

Last Release

2898d ago

Major Versions

1.1-beta3 → 2.0-beta12017-02-22

2.1.0 → 3.0-alpha12017-04-25

PHP version history (2 changes)1.0.0PHP ~5.5|~7.0

2.0-beta1PHP ~7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/55048de83ca5e5d8c67164a19c78edcaad413b0c1a4ae10d92edf8d77bedd90f?d=identicon)[dominikzogg](/maintainers/dominikzogg)

---

Top Contributors

[![dominikzogg](https://avatars.githubusercontent.com/u/1011217?v=4)](https://github.com/dominikzogg "dominikzogg (149 commits)")[![healerz](https://avatars.githubusercontent.com/u/1555970?v=4)](https://github.com/healerz "healerz (5 commits)")

---

Tags

elasticsearchqueryquerybuilder

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/saxulum-saxulum-elasticsearch-querybuilder/health.svg)

```
[![Health](https://phpackages.com/badges/saxulum-saxulum-elasticsearch-querybuilder/health.svg)](https://phpackages.com/packages/saxulum-saxulum-elasticsearch-querybuilder)
```

###  Alternatives

[elasticsearch/elasticsearch

PHP Client for Elasticsearch

5.3k184.2M1.1k](/packages/elasticsearch-elasticsearch)[netgen/query-translator

Query Translator is a search query translator with AST representation

2042.0M8](/packages/netgen-query-translator)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15227.1M102](/packages/opensearch-project-opensearch-php)[jsq/amazon-es-php

Support for using IAM authentication with the official Elasticsearch PHP client

9211.2M13](/packages/jsq-amazon-es-php)[babenkoivan/elastic-client

The official PHP Elasticsearch client integrated with Laravel

544.3M6](/packages/babenkoivan-elastic-client)[babenkoivan/elastic-adapter

Adapter for official PHP Elasticsearch client

404.3M9](/packages/babenkoivan-elastic-adapter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
