gskema/elasticsearch-query-dsl-php
功能完善、面向对象、可组合、可扩展的PHP Elasticsearch查询DSL构建器。
6.1.0
2024-01-29 12:03 UTC
Requires
- php: ^8.1
- ext-json: *
- gskema/phpcs-type-sniff: ^81.3
Requires (Dev)
- phpunit/phpunit: ^10.4
- squizlabs/php_codesniffer: ^3.7
README
功能完善、面向对象、可组合、可扩展的PHP Elasticsearch查询DSL构建器。
特性
- 无依赖
- 可与任何PHP Elasticsearch客户端一起使用
- 完全接口,准备用于自定义类和
- 显式类和属性命名,完全匹配生成的JSON和Elasticsearch文档
- 所有配置选项都在类内部列出,并链接到文档
- 类可以轻松组合和扩展
- 使用setter/getter,使一切都可以内联和链式调用。
- 完全工作的
::__clone()
方法 - 可扩展代码:不使用
private
、final
或readonly
- 在
__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/
接收的请求对象具有许多属性和子属性,如query
、filter
、post_filter
等。
为了避免复杂的表达式
(new SearchRequest())->setQuery( (new BoolQuery()->addFilter(new TermQuery('x') )->setPostFilter(new BoolQuery(...)))
显式选择了keyword matcher
。
变更日志
请参阅CHANGELOG获取有关最近更改的更多信息。
测试
./vendor/bin/phpunit
贡献
请参阅CONTRIBUTING获取详细信息。
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。