Skip to content
Snippets Groups Projects
Unverified Commit 40434bb5 authored by Simonas Šerlinskas's avatar Simonas Šerlinskas
Browse files

Merge branch '5.x' into 6.x

parents 04dd72a7 44ea2aad
No related branches found
No related tags found
No related merge requests found
......@@ -44,9 +44,7 @@ And now the query via DSL:
```php
$sort = new FieldSort('last_activity_date', FieldSort::DESC);
$sorts = new Sorts();
$sorts->addSort($sort);
$topHitsAggregation = new TopHitsAggregation('top_tag_hits', 1, null, $sorts);
$topHitsAggregation = new TopHitsAggregation('top_tag_hits', 1, null, $sort);
$topHitsAggregation->addParameter('_source', ['include' => ['title']]);
$termsAggregation = new TermsAggregation('top-tags', 'tags');
......
......@@ -35,9 +35,9 @@ class TopHitsAggregation extends AbstractAggregation
private $from;
/**
* @var BuilderInterface How the top matching hits should be sorted.
* @var BuilderInterface[] How the top matching hits should be sorted.
*/
private $sort;
private $sorts = [];
/**
* Constructor for top hits.
......@@ -52,7 +52,7 @@ class TopHitsAggregation extends AbstractAggregation
parent::__construct($name);
$this->setFrom($from);
$this->setSize($size);
$this->setSort($sort);
$this->addSort($sort);
}
/**
......@@ -76,23 +76,29 @@ class TopHitsAggregation extends AbstractAggregation
}
/**
* Return sort.
*
* @return BuilderInterface
* @return BuilderInterface[]
*/
public function getSort()
public function getSorts()
{
return $this->sort;
return $this->sorts;
}
/**
* Set sort.
* @param BuilderInterface[] $sorts
*/
public function setSorts(array $sorts)
{
$this->sorts = $sorts;
}
/**
* Add sort.
*
* @param BuilderInterface $sort
*/
public function setSort($sort)
public function addSort($sort)
{
$this->sort = $sort;
$this->sorts[] = $sort;
}
/**
......@@ -128,9 +134,19 @@ class TopHitsAggregation extends AbstractAggregation
*/
public function getArray()
{
$sortsOutput = [];
$addedSorts = array_filter($this->getSorts());
if ($addedSorts) {
foreach ($addedSorts as $sort) {
$sortsOutput[] = $sort->toArray();
}
} else {
$sortsOutput = null;
}
$output = array_filter(
[
'sort' => $this->getSort() ? $this->getSort()->toArray() : null,
'sort' => $sortsOutput,
'size' => $this->getSize(),
'from' => $this->getFrom(),
],
......@@ -141,4 +157,31 @@ class TopHitsAggregation extends AbstractAggregation
return empty($output) ? new \stdClass() : $output;
}
/**
* @deprecated sorts now is a container, use `getSorts()`instead.
* Return sort.
*
* @return BuilderInterface
*/
public function getSort()
{
if (isset($this->sorts[0])) {
return $this->sorts[0];
}
return null;
}
/**
* @deprecated sorts now is a container, use `addSort()`instead.
*
* Set sort.
*
* @param BuilderInterface $sort
*/
public function setSort(BuilderInterface $sort)
{
$this->sort = $sort;
}
}
......@@ -30,7 +30,7 @@ class TopHitsAggregationTest extends \PHPUnit\Framework\TestCase
$expected = [
'top_hits' => [
'sort' => [
'acme' => ['order' => 'asc'],
['acme' => ['order' => 'asc']],
],
'size' => 1,
'from' => 1,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment