Пример #1
0
 /**
  * @group functional
  */
 public function testSearchWithErrorWithKeys()
 {
     $type = $this->_createType();
     $index = $type->getIndex();
     $client = $index->getClient();
     $multiSearch = new MultiSearch($client);
     $searchGood = new Search($client);
     $searchGood->setQuery('bunny');
     $searchGood->addIndex($index)->addType($type);
     $multiSearch->addSearch($searchGood, 'search1');
     $searchBad = new Search($client);
     $searchBadQuery = new Range();
     $searchBadQuery->addField('bad', array('_id' => 0));
     $searchBadQuery->setParam('_cache', true);
     $searchBad->setQuery($searchBadQuery);
     $searchBad->addIndex($index)->addType($type);
     $multiSearch->addSearch($searchBad);
     $multiResultSet = $multiSearch->search();
     $this->assertInstanceOf('Elastica\\Multi\\ResultSet', $multiResultSet);
     $resultSets = $multiResultSet->getResultSets();
     $this->assertInternalType('array', $resultSets);
     $this->assertArrayHasKey('search1', $resultSets);
     $this->assertInstanceOf('Elastica\\ResultSet', $resultSets['search1']);
     $this->assertSame($searchGood->getQuery(), $resultSets['search1']->getQuery());
     $this->assertSame(6, $resultSets['search1']->getTotalHits());
     $this->assertCount(6, $resultSets['search1']);
     $this->assertArrayHasKey(0, $resultSets);
     $this->assertInstanceOf('Elastica\\ResultSet', $resultSets[0]);
     $this->assertSame($searchBad->getQuery(), $resultSets[0]->getQuery());
     $this->assertSame(0, $resultSets[0]->getTotalHits());
     $this->assertCount(0, $resultSets[0]);
     $this->assertTrue($resultSets[0]->getResponse()->hasError());
     $this->assertTrue($multiResultSet->hasError());
 }
Пример #2
0
 /**
  * Find all documents in a given range. The range is provided as an array with
  * at least either a 'lt' or 'lte' key and a 'gt' or 'gte' key.
  *
  * 'lt'  stands for less than
  * 'lte' for less than or equal to
  * 'gt'  for greater than
  * 'gte' for greater than or equal to
  *
  * @link https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
  *
  * @param string $field
  * @param array $range
  * @param bool $timeZone
  * @param bool $format
  * @return Query
  */
 public function range($field, array $range, $timeZone = false, $format = false)
 {
     $range = new Range($field, $range);
     if ($timeZone) {
         $range->setParam('time_zone', $timeZone);
     }
     if ($format) {
         $range->setParam('format', $format);
     }
     $query = $this->newQuery($range);
     $this->query[] = $query;
     return $query;
 }