Skip to content

Commit

Permalink
Merge branch '6.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
Simonas Serlinskas committed Apr 11, 2018
2 parents 62f765c + 40434bb commit d71e729
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 28 deletions.
17 changes: 10 additions & 7 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,18 @@
}
],
"require": {
"php": ">=7.0",
"symfony/serializer": "~3.0|~4.0",
"paragonie/random_compat": "^2.0",
"elasticsearch/elasticsearch": "~6.0"
"php": "^7.0",
"symfony/serializer": "^3.0|^4.0",
"paragonie/random_compat": "^1.0|^2.0"
},
"require-dev": {
"phpunit/phpunit": "~6.0",
"squizlabs/php_codesniffer": "~3.0",
"satooshi/php-coveralls": "~2.0"
"elasticsearch/elasticsearch": "^6.0",
"phpunit/phpunit": "^6.0",
"squizlabs/php_codesniffer": "^3.0",
"satooshi/php-coveralls": "~1.0|~2.0"
},
"suggest": {
"elasticsearch/elasticsearch": "This library is for elasticsearch/elasticsearch client to enhance it with DSL functionality."
},
"autoload": {
"psr-4": {
Expand Down
4 changes: 1 addition & 3 deletions docs/Aggregation/Metric/TopHits.md
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
6 changes: 4 additions & 2 deletions src/Aggregation/Bucketing/DateRangeAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public function __construct($name, $field = null, $format = null, array $ranges
foreach ($ranges as $range) {
$from = isset($range['from']) ? $range['from'] : null;
$to = isset($range['to']) ? $range['to'] : null;
$this->addRange($from, $to);
$key = isset($range['key']) ? $range['key'] : null;
$this->addRange($from, $to, $key);
}
}

Expand All @@ -78,12 +79,13 @@ public function setFormat($format)
*
* @throws \LogicException
*/
public function addRange($from = null, $to = null)
public function addRange($from = null, $to = null, $key = null)
{
$range = array_filter(
[
'from' => $from,
'to' => $to,
'key' => $key,
]
);

Expand Down
67 changes: 55 additions & 12 deletions src/Aggregation/Metric/TopHitsAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -52,7 +52,7 @@ public function __construct($name, $size = null, $from = null, $sort = null)
parent::__construct($name);
$this->setFrom($from);
$this->setSize($size);
$this->setSort($sort);
$this->addSort($sort);
}

/**
Expand All @@ -76,23 +76,29 @@ public function setFrom($from)
}

/**
* 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;
}

/**
Expand Down Expand Up @@ -128,9 +134,19 @@ public function getType()
*/
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(),
],
Expand All @@ -141,4 +157,31 @@ function ($val) {

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;
}
}
20 changes: 18 additions & 2 deletions src/Query/Geo/GeoShapeQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ class GeoShapeQuery implements BuilderInterface
{
use ParametersTrait;

const INTERSECTS = 'intersects';
const DISJOINT = 'disjoint';
const WITHIN = 'within';
const CONTAINS = 'contains';

/**
* @var array
*/
Expand Down Expand Up @@ -50,10 +55,18 @@ public function getType()
* @param string $field Field name.
* @param string $type Shape type.
* @param array $coordinates Shape coordinates.
* @param string $relation Spatial relation.
* @param array $parameters Additional parameters.
*/
public function addShape($field, $type, array $coordinates, array $parameters = [])
public function addShape($field, $type, array $coordinates, $relation = self::INTERSECTS, array $parameters = [])
{
// TODO: remove this in the next major version
if (is_array($relation)) {
$parameters = $relation;
$relation = self::INTERSECTS;
trigger_error('$parameters as parameter 4 in addShape is deprecated', E_USER_DEPRECATED);
}

$filter = array_merge(
$parameters,
[
Expand All @@ -62,7 +75,10 @@ public function addShape($field, $type, array $coordinates, array $parameters =
]
);

$this->fields[$field]['shape'] = $filter;
$this->fields[$field] = [
'shape' => $filter,
'relation' => $relation,
];
}

/**
Expand Down
2 changes: 1 addition & 1 deletion tests/Unit/Aggregation/Metric/TopHitsAggregationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public function testToArray()
$expected = [
'top_hits' => [
'sort' => [
'acme' => ['order' => 'asc'],
['acme' => ['order' => 'asc']],
],
'size' => 1,
'from' => 1,
Expand Down
3 changes: 2 additions & 1 deletion tests/Unit/Query/Geo/GeoShapeQueryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class GeoShapeQueryTest extends \PHPUnit\Framework\TestCase
public function testToArray()
{
$filter = new GeoShapeQuery(['param1' => 'value1']);
$filter->addShape('location', 'envelope', [[13, 53], [14, 52]]);
$filter->addShape('location', 'envelope', [[13, 53], [14, 52]], GeoShapeQuery::INTERSECTS);

$expected = [
'geo_shape' => [
Expand All @@ -30,6 +30,7 @@ public function testToArray()
'type' => 'envelope',
'coordinates' => [[13, 53], [14, 52]],
],
'relation' => 'intersects'
],
'param1' => 'value1',
],
Expand Down

0 comments on commit d71e729

Please sign in to comment.