1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php
namespace Elastica\Test\Aggregation;
use Elastica\Aggregation\Max;
use Elastica\Document;
use Elastica\Query;
use Elastica\Script;
class MaxTest extends BaseAggregationTest
{
protected function setUp()
{
parent::setUp();
$this->_index = $this->_createIndex('max');
$docs = array(
new Document('1', array('price' => 5)),
new Document('2', array('price' => 8)),
new Document('3', array('price' => 1)),
new Document('4', array('price' => 3)),
);
$this->_index->getType('test')->addDocuments($docs);
$this->_index->refresh();
}
public function testToArray()
{
$expected = array(
"max" => array(
"field" => "price",
"script" => "_value * conversion_rate",
"params" => array(
"conversion_rate" => 1.2
)
),
"aggs" => array(
"subagg" => array("max" => array("field" => "foo"))
)
);
$agg = new Max("min_price_in_euros");
$agg->setField("price");
$agg->setScript(new Script("_value * conversion_rate", array('conversion_rate' => 1.2)));
$max = new Max("subagg");
$max->setField("foo");
$agg->addAggregation($max);
$this->assertEquals($expected, $agg->toArray());
}
public function testMaxAggregation()
{
$agg = new Max("min_price");
$agg->setField("price");
$query = new Query();
$query->addAggregation($agg);
$results = $this->_index->search($query)->getAggregation("min_price");
$this->assertEquals(8, $results['value']);
// test using a script
$agg->setScript(new Script("_value * conversion_rate", array("conversion_rate" => 1.2)));
$query = new Query();
$query->addAggregation($agg);
$results = $this->_index->search($query)->getAggregation("min_price");
$this->assertEquals(8 * 1.2, $results['value']);
}
}
|