一个基于elasticsearch/elasticsearch简易的Elasticsearch工具包, 对Document
的查询操作进行了简单的封装.
composer require funphp/elasticsearch
在你需要搜索的类中添加 \Funphp\Elasticsearch\Searchable
trait, 就可以使用相关的搜索操作了.
通过 searchableIndex()
方法, 就可以指定index
了.
namespace Start;
use Funphp\Elasticsearch\Searchable;
Class User{
use Searchable;
public function searchableIndex(): string
{
return 'index-user';
}
}
self::searchable()
->searchableId('test-id')
->search();
self::searchable()
->query(function (Query $query) {
$query->term('status', 1);
})
->search();
self::searchable()
->query(function (Query $query) {
$query->match('name', '乌拉');
})
->search();
self::searchable()
->query(function (Query $query) {
$query->ids([1, 2]);
})
->search();
self::searchable()
->query(function (Query $query) {
$query->range('age', function (Range $range) {
$range->gte(20);
});
})
->search();
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();
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` 来指定查询的列
对于分页查询,你可以使用`from`和`size`方法来实现.
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();