コード例 #1
0
 /**
  * Data provider for testGlobalAggregation.
  *
  * @return array
  */
 public function getGlobalAggregationData()
 {
     $out = [];
     $results = ['agg_test_agg' => ['doc_count' => 3, 'agg_test_agg2' => ['buckets' => [['key' => '*-40.0', 'to' => 40, 'to_as_string' => '40.0', 'doc_count' => 3]]]]];
     $aggregation = new GlobalAggregation('test_agg');
     $aggregation2 = new RangeAggregation('test_agg2');
     $aggregation2->setField('price');
     $aggregation2->addRange(null, 40);
     $aggregation->addAggregation($aggregation2);
     // Case #0 global aggregation without query.
     $out[] = [$aggregation, null, $results, 3];
     // Case #1 global aggregation with query.
     $query = new MatchQuery('title', 'bar');
     $out[] = [$aggregation, $query, $results, 1];
     return $out;
 }
コード例 #2
0
 /**
  * Data provider for testFilterAggregation().
  *
  * @return array
  */
 public function getFilterAggregationData()
 {
     $out = [];
     // Case #0 Single filter aggregation.
     $aggregation = new FilterAggregation('test_agg');
     $filter = new RegexpFilter('title', 'pizza');
     $aggregation->setFilter($filter);
     $result = ['agg_test_agg' => ['doc_count' => 1]];
     $out[] = [$aggregation, $result];
     // Case #1 Nested filter aggregation.
     $aggregation = new FilterAggregation('test_agg');
     $filter = new RegexpFilter('title', 'pizza');
     $aggregation->setFilter($filter);
     $aggregation2 = new RangeAggregation('test_agg_2');
     $aggregation2->setField('price');
     $aggregation2->addRange(10, 20);
     $aggregation->addAggregation($aggregation2);
     $result = ['agg_test_agg' => ['doc_count' => 1, 'agg_test_agg_2' => ['buckets' => [['key' => '10.0-20.0', 'from' => 10, 'from_as_string' => '10.0', 'to' => 20, 'to_as_string' => '20.0', 'doc_count' => 1]]]]];
     $out[] = [$aggregation, $result];
     return $out;
 }
コード例 #3
0
 /**
  * @return Search
  */
 public function getTestSubAggregationsData()
 {
     $out = [];
     // Case 0: top hits aggregation inside ranges.
     $search = new Search();
     $rangeAgg = new RangeAggregation('range');
     $rangeAgg->setField('price');
     $rangeAgg->addRange(null, 15);
     $rangeAgg->addRange(15);
     $topHitsAgg = new TopHitsAggregation('top_hits');
     $topHitsAgg->setSort(new Sorts(new Sort('price', Sort::ORDER_DESC)));
     $rangeAgg->addAggregation($topHitsAgg);
     $search->addAggregation($rangeAgg);
     $expectedTopHits = [[1], [2, 3]];
     $out[] = [$search, $expectedTopHits];
     return $out;
 }
コード例 #4
0
 /**
  * Tests removing ranges from aggregation.
  */
 public function testRemoveAggregationWithFalse()
 {
     $range = new RangeAggregation('bar');
     $this->assertFalse($range->removeRange(10, 20), 'Range does not exist');
     $range->addRange(10, 20);
     $range->addRange(25, 30, 'test_key');
     $this->assertTrue($range->removeRange(10, 20), 'Range removed.');
     $this->assertFalse($range->removeRangeByKey('test_key'), 'Keyed ranges are not enabled yet!');
     $range->setKeyed(true);
     $range->addRange(15, 20, 'foo');
     $this->assertFalse($range->removeRangeByKey('key'), 'Keyed range does not exist.');
     $this->assertTrue($range->removeRangeByKey('foo'), 'Keyed range should be removed.');
 }
コード例 #5
0
 /**
  * Tests removeRange method.
  */
 public function testRangeAggregationRemoveRange()
 {
     $aggregation = new RangeAggregation('foo');
     $aggregation->setField('price');
     $aggregation->setKeyed(true);
     $aggregation->addRange(100, 300, 'key');
     $aggregation->addRange(500, 700, 'range_2');
     $expected = ['field' => 'price', 'keyed' => true, 'ranges' => [['from' => 100, 'to' => 300, 'key' => 'key']]];
     $aggregation->removeRange(500, 700);
     $result = $aggregation->getArray();
     $this->assertEquals($result, $expected, 'get expected array of ranges');
     $result = $aggregation->removeRange(500, 700);
     $this->assertFalse($result, 'returns false after removing not-existing range');
 }