Elasticsearch
一个基于elasticsearch/elasticsearch简易的Elasticsearch工具包, 对Document
的查询操作进行了简单的封装.
安装
composer require funphp/elasticsearch
使用
引入相关搜索类
在你需要搜索的类中添加 FunphpElasticsearchSearchable
trait, 就可以使用相关的搜索操作了.
通过 searchableIndex()
方法, 就可以指定index
了.
namespace Start; use FunphpElasticsearchSearchable; Class User{ use Searchable; public function searchableIndex(): string { return 'index-user'; } }
查询文档
根据指定id
查询
self::searchable() ->searchableId('test-id') ->search();
term
self::searchable() ->query(function (Query $query) { $query->term('status', 1); }) ->search();
match
self::searchable() ->query(function (Query $query) { $query->match('name', '乌拉'); }) ->search();
ids
self::searchable() ->query(function (Query $query) { $query->ids([1, 2]); }) ->search();
range
self::searchable() ->query(function (Query $query) { $query->range('age', function (Range $range) { $range->gte(20); }); }) ->search();
bool
must
self::searchable() ->query(function (Query $query) { $query->bool(function (BoolQuery $boolQuery) { $boolQuery->must(function (Query $query) { $query->range('login_at', function (Range $range) { $range->gte('2021-10-01 00:00:00'); }); })->must(function (Query $query) { $query->range('age', function (Range $range) { $range->lt(18)->gte(12); }); }); }); }) ->sort(fn(Sort $sort) => $sort->sortBy('age')) ->search();
must_not
self::searchable()
->query(function (Query $query) {
$query->bool(function (BoolQuery $boolQuery) {
$boolQuery->mustNot(function (Query $query) {
$query->exists('comments');
});
});
})
->from(10)
->size(10)
->source(['id', 'title', 'content'])
->search();
filter
should
用法与must
相同
source
你可以使用`source` 来指定查询的列
对于分页查询,你可以使用`from`和`size`方法来实现.
aggs
self::searchable() ->query(function (Query $query) { $query->term('status', $status); })->aggs(function (Aggregation $aggregation) { $aggregation->valueCount('count', 'id') ->max('max', 'value') ->sum('sum', 'value'); })->search();
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。