Elasticsearch Repository is a simple, smart implementation of Active Repository for Elasticsearch.
- provide active repository pattern over your elasticsearch indices, types.
- bring query builder into your elasticsearch repositories.
- Minimize lines of code for building elasticsearch queries with system with big business logic.
- Prevent code duplication.
- Reduce potential programming errors.
grap it via composer
composer require mustafah15/elastic-repository
Elasticsearch Repository package is framework-agnostic and as such can be integrated easily natively or with your favorite framework.
- Extend ElasticRepository class as a repository for your type or index.
class schoolsRepository extends ElasticRepository
{
// method contains some bussiness logic
public function returnQueryWherename()
{
$this->where('name', 'EGSchool', 0.5)->getResultQuery();
}
}
when you extend ElasticRepository
class you will have get various functionality
The setIndex()
and setType()
methods for setting up your index name and type name into Repository:
The setSort()
method adds main sort criteria for the query:
sorting with _score by default when adding score function
// pass field name to sort by
$queryBuilder->setSort('fieldName');
The setOrder()
method to specify sort direction:
$queryBuilder->setSort('fieldName')->setOrder('desc');
The setTransformer($transformer)
to add transformer for your result transformer must implement TransformerContract
method get()
to get result from your final query after building it using query builder:
The getResultWithScore($scoreFunction)
method to get results after adding a score function:
takes Query\FunctionScore $functionScore
as a parameter to be applied to your results
the getResultQuery()
return Query object
takes Query\FunctionScore $functionScore
as a parameter to apply scoring to your query
Every ElasticRepository class have it's own query builder which have a lot of operations and functionlity that you can use.
The where()
and whereNot()
methods adding must and must not to the main filter:
//attribute paramter then the expected value and optional value for the field boost
$queryBuilder->where($attribute, $value = null, $boost = 1.0);
The whereIn()
and whereNotIn()
methods adding Range to the main filter:
//attribute paramter then a optional value for the fields from and to
$queryBuilder->whereIn($attribute, $from = '', $to = '');
$queryBuilder->exist('fieldName');
$queryBuilder->match('fieldName', $keywordToMatch);
- caching support
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.