ongr/elasticsearch-dsl
Object-oriented Elasticsearch query builder for PHP. Build searches, filters, aggregations and more with a DSL, then export to arrays for elasticsearch-php or ONGR ElasticsearchBundle. Supports Elasticsearch 5/6/7 via versioned releases.
More info about filters aggregation is in the official elasticsearch docs
Defines a multi bucket aggregations where each bucket is associated with a filter. Each bucket will collect all documents that match its associated filter.
Filters can have names or be anonymous, this is controlled by setAnonymous method. By default filters are not anonymous and trying to add filter without name will result in exception.
{
"aggregations" : {
"grades_stats" : {
"filters" : {
"filters" : {
"error" : { "term" : { "body" : "error" }},
"warning" : { "term" : { "body" : "warning" }}
}
},
"aggregations" : {
"monthly" : {
"histogram" : {
"field" : "timestamp",
"interval" : "1M"
}
}
}
}
}
}
And now the query via DSL:
$errorTermFilter = new TermQuery('body', 'error');
$warningTermFilter = new TermQuery('body', 'warning');
$histogramAggregation = new HistogramAggregation('monthly', 'timestamp');
$histogramAggregation->setInterval('1M');
$filterAggregation = new FiltersAggregation(
'grades_stats',
[
'error' => $errorTermFilter,
'warning' => $warningTermFilter,
]
);
$filterAggregation->addAggregation($histogramAggregation);
$search = new Search();
$search->addAggregation($filterAggregation);
$queryArray = $search->toArray();
{
"aggregations" : {
"grades_stats" : {
"filters" : {
"filters" : [
{ "term" : { "body" : "error" }},
{ "term" : { "body" : "warning" }}
]
}
},
"aggregations" : {
"monthly" : {
"histogram" : {
"field" : "timestamp",
"interval" : "1M"
}
}
}
}
}
}
And now the query via DSL:
$errorTermFilter = new TermQuery('body', 'error');
$warningTermFilter = new TermQuery('body', 'warning');
$histogramAggregation = new HistogramAggregation('monthly', 'timestamp');
$histogramAggregation->setInterval('1M');
$filterAggregation = new FiltersAggregation(
'grades_stats',
[
$errorTermFilter,
$warningTermFilter,
],
true
);
$filterAggregation->addAggregation($histogramAggregation);
$search = new Search();
$search->addAggregation($filterAggregation);
$queryArray = $search->toArray();
How can I help you explore Laravel packages today?