erichard/elasticsearch-query-builder

使用流畅的接口创建ElasticSearch查询

3.0.3-beta 2024-06-14 11:20 UTC

This package is auto-updated.

Last update: 2024-09-14 11:54:51 UTC


README

img php

这是一个PHP库,通过使用流畅的接口帮助您为ElasticSearch客户端构建查询。

警告:此分支包含下一个3.x版本。请查看相应的issue以获取路线图。

安装

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

使用方法

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());

使用PHP 8.1,您可以使用命名参数,例如

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

或者使用工厂

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

贡献

  • 使用PHPCS修复器和PHPStan
    • composer lint
  • 更新测试(PHPUnit)
    • composer test