Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Build query for an ElasticSearch client using a fluent interface

License

erichard/elasticsearch-query-builder

Repository files navigation

ElasticSearch Query Builder

img php

This is a PHP library which helps you build query for an ElasticSearch client by using a fluent interface.

WARNING: This branch contains the next 3.x release. Check the corresponding issue for the roadmap.

Installation

composer require erichard/elasticsearch-query-builder "^3.0@beta"

Usage

use Erichard\ElasticQueryBuilder\QueryBuilder;
use Erichard\ElasticQueryBuilder\Aggregation\Aggregation;
use Erichard\ElasticQueryBuilder\Filter\Filter;
$qb = new QueryBuilder();
$qb
 ->setIndex('app')
 ->setSize(10)
;
// Add an aggregation
$qb->addAggregation(Aggregation::terms('agg_name', 'my_field'));
$qb->addAggregation(Aggregation::terms('agg_name_same_as_field'));
// Set query
$qb->setQuery(Query::terms('field', 'value'));
// I am using a client from elasticsearch/elasticsearch here
$results = $client->search($qb->build());

with PHP 8.1 you can use named arguments like this:

$query = new BoolQuery(must: [
 new RangeQuery(
 field: 'price',
 gte: 100
 ),
 new RangeQuery(
 field: 'stock',
 gte: 10
 ),
]);

or with the factory

$query = Query::bool(must: [
 Query::range(
 field: 'price',
 gte: 100
 ),
 Query::range(
 field: 'stock',
 gte: 10
 ),
]);

Contribution

  • Use PHPCS fixer and PHPStan
    • composer lint
  • Update tests (PHPUnit)
    • composer test

About

Build query for an ElasticSearch client using a fluent interface

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 11

Languages

AltStyle によって変換されたページ (->オリジナル) /