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、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。