gskema/elasticsearch-query-dsl-php

功能完善、面向对象、可组合、可扩展的PHP Elasticsearch查询DSL构建器。

6.1.0 2024-01-29 12:03 UTC

This package is auto-updated.

Last update: 2024-08-29 13:07:54 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Total Downloads

功能完善、面向对象、可组合、可扩展的PHP Elasticsearch查询DSL构建器。

特性

  • 无依赖
  • 可与任何PHP Elasticsearch客户端一起使用
  • 完全接口,准备用于自定义类和
  • 显式类和属性命名,完全匹配生成的JSON和Elasticsearch文档
  • 所有配置选项都在类内部列出,并链接到文档
  • 类可以轻松组合和扩展
  • 使用setter/getter,使一切都可以内联和链式调用。
  • 完全工作的::__clone()方法
  • 可扩展代码:不使用privatefinalreadonly
  • __construct中创建基本对象,直到调用jsonSerialize()之前不执行不必要的体构建逻辑

版本

大多数类应该与任何Elasticsearch版本兼容。如果不兼容或不支持,可以使用Raw*或自定义类。

由于主版本号遵循Elasticsearch的主版本号,次版本号保留用于重大更改。

安装

composer require gskema/elasticsearch-query-dsl-php 6.* # match your Elasticsearch version

使用

$searchRequest = new SearchRequest();
$searchRequest->setOption('min_score', 3.5);
$searchRequest->setSize(10);
$searchRequest->setQuery(
    (new BoolMatcher())->addMustNot(new TermMatcher('field1', 'value1'))
);
$searchRequest->addStatGroup('stat_group_1');
$searchRequest->setAgg(
    'agg1',
    (new FilterAggregation(new MatchAllMatcher()))
        ->setAgg('agg2', TermsAggregation::fromField('field2', 'value2'))
);

(new ElasticsearchClient())->search($searchRequest->jsonSerialize());

所有类都匹配官方Elasticsearch文档中的命名。每个类都列出了使用属性在类上方列出的可能配置选项

#[Options([
    'flags' => 'ALL|ANYSTRING|COMPLEMENT|EMPTY|INTERSECTION|INTERVAL|NONE',
    'max_determinized_states' => 2000,
    ...
])]
class RegexpMatcher implements MultiTermMatcherInterface {}

同样,SearchRequest类也有列出的可能URL参数

#[Parameters([
    'timeout' => '2s',
    'terminate_after' => 1,
    'max_concurrent_shard_requests' => 2,
    ...
])]
class SearchRequest implements SearchRequestInterface {}

匹配器?

由Elasticsearch /_search/接收的请求对象具有许多属性和子属性,如queryfilterpost_filter等。

为了避免复杂的表达式

(new SearchRequest())->setQuery(
    (new BoolQuery()->addFilter(new TermQuery('x')
)->setPostFilter(new BoolQuery(...)))

显式选择了keyword matcher

变更日志

请参阅CHANGELOG获取有关最近更改的更多信息。

测试

./vendor/bin/phpunit

贡献

请参阅CONTRIBUTING获取详细信息。

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。