Exemplo n.º 1
0
 public function testTest()
 {
     $client = new Elastica_Client();
     $index = $client->getIndex('test');
     $index->create(array(), true);
     $type = $index->getType('helloworld');
     $mapping = new Elastica_Type_Mapping($type, array('name' => array('type' => 'string', 'store' => 'no'), 'dtmPosted' => array('type' => 'date', 'store' => 'no', 'format' => 'yyyy-MM-dd HH:mm:ss')));
     $type->setMapping($mapping);
     $doc = new Elastica_Document(1, array('name' => 'nicolas ruflin', 'dtmPosted' => "2011-06-23 21:53:00"));
     $type->addDocument($doc);
     $doc = new Elastica_Document(2, array('name' => 'raul martinez jr', 'dtmPosted' => "2011-06-23 09:53:00"));
     $type->addDocument($doc);
     $doc = new Elastica_Document(3, array('name' => 'rachelle clemente', 'dtmPosted' => "2011-07-08 08:53:00"));
     $type->addDocument($doc);
     $doc = new Elastica_Document(4, array('name' => 'elastica search', 'dtmPosted' => "2011-07-08 01:53:00"));
     $type->addDocument($doc);
     $facet = new Elastica_Facet_DateHistogram('dateHist1');
     $facet->setInterval("day");
     $facet->setField("dtmPosted");
     $query = new Elastica_Query();
     $query->addFacet($facet);
     $query->setQuery(new Elastica_Query_MatchAll());
     $index->refresh();
     $response = $type->search($query);
     $facets = $response->getFacets();
     $this->assertEquals(4, $response->getTotalHits());
     $this->assertEquals(2, count($facets['dateHist1']['entries']));
 }
Exemplo n.º 2
0
 public function testResponse()
 {
     $client = new Elastica_Client();
     $index = $client->getIndex('test');
     $index->create(array(), true);
     $type = $index->getType('helloworld');
     $mapping = new Elastica_Type_Mapping($type, array('name' => array('type' => 'string', 'store' => 'no'), 'dtmPosted' => array('type' => 'date', 'store' => 'no', 'format' => 'yyyy-MM-dd HH:mm:ss')));
     $type->setMapping($mapping);
     $doc = new Elastica_Document(1, array('name' => 'nicolas ruflin', 'dtmPosted' => "2011-06-23 21:53:00"));
     $type->addDocument($doc);
     $doc = new Elastica_Document(2, array('name' => 'raul martinez jr', 'dtmPosted' => "2011-06-23 09:53:00"));
     $type->addDocument($doc);
     $doc = new Elastica_Document(3, array('name' => 'rachelle clemente', 'dtmPosted' => "2011-07-08 08:53:00"));
     $type->addDocument($doc);
     $doc = new Elastica_Document(4, array('name' => 'elastica search', 'dtmPosted' => "2011-07-08 01:53:00"));
     $type->addDocument($doc);
     $query = new Elastica_Query();
     $query->setQuery(new Elastica_Query_MatchAll());
     $index->refresh();
     $resultSet = $type->search($query);
     $engineTime = $resultSet->getResponse()->getEngineTime();
     $shardsStats = $resultSet->getResponse()->getShardsStatistics();
     $this->assertTrue($engineTime != '');
     $this->assertTrue(is_array($shardsStats));
     $this->assertArrayHasKey('total', $shardsStats);
     $this->assertArrayHasKey('successful', $shardsStats);
 }
Exemplo n.º 3
0
	public function testStatisticalWithSetFields() {
		$client = new Elastica_Client();
		$index = $client->getIndex('test');
		$index->create(array(), true);
		$type = $index->getType('helloworld');

		$doc = new Elastica_Document(1, array('price' => 10, 'price2' => 20));
		$type->addDocument($doc);
		$doc = new Elastica_Document(2, array('price' => 35, 'price2' => 70));
		$type->addDocument($doc);
		$doc = new Elastica_Document(2, array('price' => 45, 'price2' => 90));
		$type->addDocument($doc);

		$facet = new Elastica_Facet_Statistical('stats');
		$facet->setFields(array('price','price2'));

		$query = new Elastica_Query();
		$query->addFacet($facet);
		$query->setQuery(new Elastica_Query_MatchAll());

		$index->refresh();

		$response = $type->search($query);
		$facets = $response->getFacets();

		$this->assertEquals(165, $facets['stats']['total']);
		$this->assertEquals(10, $facets['stats']['min']);
		$this->assertEquals(90, $facets['stats']['max']);
	}
Exemplo n.º 4
0
 public function testSearch()
 {
     $client = new Elastica_Client();
     $index = new Elastica_Index($client, 'test');
     $index->create(array(), true);
     $index->getSettings()->setNumberOfReplicas(0);
     //$index->getSettings()->setNumberOfShards(1);
     $type = new Elastica_Type($index, 'helloworldmlt');
     $mapping = new Elastica_Type_Mapping($type, array('email' => array('store' => 'yes', 'type' => 'string', 'index' => 'analyzed'), 'content' => array('store' => 'yes', 'type' => 'string', 'index' => 'analyzed')));
     $mapping->setSource(array('enabled' => false));
     $type->setMapping($mapping);
     $doc = new Elastica_Document(1000, array('email' => '*****@*****.**', 'content' => 'This is a sample post. Hello World Fuzzy Like This!'));
     $type->addDocument($doc);
     $doc = new Elastica_Document(1001, array('email' => '*****@*****.**', 'content' => 'This is a fake nospam email address for gmail'));
     $type->addDocument($doc);
     // Refresh index
     $index->refresh();
     $mltQuery = new Elastica_Query_MoreLikeThis();
     $mltQuery->setLikeText('fake gmail sample');
     $mltQuery->setFields(array('email', 'content'));
     $mltQuery->setMaxQueryTerms(1);
     $mltQuery->setMinDocFrequency(1);
     $mltQuery->setMinTermFrequency(1);
     $query = new Elastica_Query();
     $query->setFields(array('email', 'content'));
     $query->setQuery($mltQuery);
     $resultSet = $type->search($query);
     $resultSet->getResponse()->getData();
     $this->assertEquals(2, $resultSet->count());
 }
Exemplo n.º 5
0
	public function testQuery() {

		$client = new Elastica_Client();
		$index = $client->getIndex('test');
		$index->create(array(), true);
		$type = $index->getType('helloworld');

		$doc = new Elastica_Document(1, array('name' => 'nicolas ruflin'));
		$type->addDocument($doc);
		$doc = new Elastica_Document(2, array('name' => 'ruflin test'));
		$type->addDocument($doc);
		$doc = new Elastica_Document(2, array('name' => 'nicolas helloworld'));
		$type->addDocument($doc);


		$facet = new Elastica_Facet_Terms('test');
		$facet->setField('name');

		$query = new Elastica_Query();
		$query->addFacet($facet);
		$query->setQuery(new Elastica_Query_MatchAll());

		$index->refresh();

		$response = $type->search($query);
		$facets = $response->getFacets();

		$this->assertEquals(3, count($facets['test']['terms']));
	}	
Exemplo n.º 6
0
 public function testQuery()
 {
     $client = new Elastica_Client();
     $index = new Elastica_Index($client, 'test');
     $index->create(array(), true);
     $type = new Elastica_Type($index, 'multi_match');
     $doc = new Elastica_Document(1, array('id' => 1, 'name' => 'Rodolfo', 'last_name' => 'Moraes'));
     $type->addDocument($doc);
     // Refresh index
     $index->refresh();
     $multiMatch = new Elastica_Query_MultiMatch();
     $query = new Elastica_Query();
     $multiMatch->setQuery('Rodolfo');
     $multiMatch->setFields(array('name', 'last_name'));
     $query->setQuery($multiMatch);
     $resultSet = $index->search($query);
     $this->assertEquals(1, $resultSet->count());
     $multiMatch->setQuery('Moraes');
     $multiMatch->setFields(array('name', 'last_name'));
     $query->setQuery($multiMatch);
     $resultSet = $index->search($query);
     $this->assertEquals(1, $resultSet->count());
 }
Exemplo n.º 7
0
 public function testQuery()
 {
     $client = new Elastica_Client();
     $index = $client->getIndex('test');
     $index->create(array(), true);
     $type = $index->getType('helloworld');
     $doc = new Elastica_Document(1, array('name' => 'tom', 'paid' => 7));
     $type->addDocument($doc);
     $doc = new Elastica_Document(2, array('name' => 'tom', 'paid' => 2));
     $type->addDocument($doc);
     $doc = new Elastica_Document(3, array('name' => 'tom', 'paid' => 5));
     $type->addDocument($doc);
     $doc = new Elastica_Document(4, array('name' => 'mike', 'paid' => 13));
     $type->addDocument($doc);
     $doc = new Elastica_Document(5, array('name' => 'mike', 'paid' => 1));
     $type->addDocument($doc);
     $doc = new Elastica_Document(6, array('name' => 'mike', 'paid' => 15));
     $type->addDocument($doc);
     $facet = new Elastica_Facet_TermsStats('test');
     $facet->setKeyField('name');
     $facet->setValueField('paid');
     $query = new Elastica_Query();
     $query->addFacet($facet);
     $query->setQuery(new Elastica_Query_MatchAll());
     $index->refresh();
     $response = $type->search($query);
     $facets = $response->getFacets();
     $this->assertEquals(2, count($facets['test']['terms']));
     foreach ($facets['test']['terms'] as $facet) {
         if ($facet['term'] === 'tom') {
             $this->assertEquals(14, $facet['total']);
         }
         if ($facet['term'] === 'mike') {
             $this->assertEquals(29, $facet['total']);
         }
     }
 }
Exemplo n.º 8
0
 public function search($query)
 {
     if (is_string($query)) {
         $queryObj = new Query();
         $queryObj->setQuery($query);
         $query = $queryObj;
     }
     if ($query instanceof QueryInterface) {
         $query->setIndexManager($this);
         // Build the Elastica Query
         $elasticaQuery = new \Elastica_Query();
         // Define a Query. We want a string query.
         $elasticaQueryString = new \Elastica_Query_QueryString();
         $elasticaQueryString->setDefaultOperator('AND');
         $elasticaQueryString->setQuery($query->getQuery());
         $elasticaQuery->setQuery($elasticaQueryString);
         $elasticaQuery->setFrom($query->getOffset());
         $elasticaQuery->setLimit($query->getLimit());
         $index = $this->getIndex();
         $elasticaResultSet = $index->search($elasticaQuery);
         return $elasticaResultSet;
     }
     throw new \InvalidArgumentException();
 }
Exemplo n.º 9
0
 /**
  * Search method.
  *
  * @return Elastica_ResultSet
  */
 public function search()
 {
     $index = $this->index;
     // build search query
     $query = new \Elastica_Query();
     $query->setQuery($this->getQuery());
     $query->addFacet($this->getFacet('class'));
     $query->addFacet($this->getFacet('family'));
     $query->addFacet($this->getFacet('town'));
     $query->addFacet($this->getFacet('canton'));
     $query->addFacet($this->getFacet('user'));
     $query->addFacet($this->getFacet('habitat'));
     $query->addFacet($this->getFacet('redlist'));
     $query->addFacet($this->getFacet('image_type'));
     $query->setSize(100);
     // sorting
     if (count($this->sort) > 0) {
         $query->setSort($this->sort);
     }
     // add filter to query
     $filter = $this->getFilter();
     if (count($filter->getParams()) > 0) {
         $query->setFilter($filter);
     }
     $result = $this->getType()->search($query);
     return $result;
 }
Exemplo n.º 10
0
	public function testGetQuery() {
		$query = new Elastica_Query();

		try {
			$query->getQuery();
			$this->fail('should throw exception because query does not exist');
		} catch(Elastica_Exception_Invalid $e) {
			$this->assertTrue(true);
		}


		$termQuery = new Elastica_Query_Term();
		$termQuery->setTerm('text', 'value');
		$query->setQuery($termQuery);

		$this->assertEquals($termQuery->toArray(), $query->getQuery());
	}
Exemplo n.º 11
0
 function search($query, $facets = array(), $offset = false, $limit = false, $indexName = false, $indexType = false)
 {
     $global_query = $query;
     $query = preg_replace("/[^a-zA-Z 0-9]+/", "", $global_query['s']);
     // Define a Query. We want a string query.
     $elasticaQueryString = new Elastica_Query_QueryString();
     $elasticaQueryString->setQuery($query);
     $elasticaQueryString->setFields(array('title', 'content'));
     $elasticaFilterAnd = new Elastica_Filter_And();
     $elasticaFilterBool = new Elastica_Filter_Bool();
     $tagTerm = $global_query['tags'];
     $authorTerm = $global_query['author'];
     $catTerm = $global_query['cats'];
     $dateFrom = $global_query['datefrom'];
     $dateTo = $global_query['dateto'];
     if (!empty($tagTerm)) {
         $tagTermArr = explode(",", $tagTerm);
         $filterTag = new Elastica_Filter_Terms();
         $filterTag->setTerms('tag', $tagTermArr);
         $elasticaFilterAnd->addFilter($filterTag);
     }
     if (!empty($authorTerm)) {
         $authorTermArr = explode(",", $authorTerm);
         $filterAuthor = new Elastica_Filter_Terms();
         $filterAuthor->setTerms('author', $authorTermArr);
         $elasticaFilterAnd->addFilter($filterAuthor);
     }
     if (!empty($catTerm)) {
         $catTermArr = explode(",", $catTerm);
         $filterCat = new Elastica_Filter_Terms();
         $filterCat->setTerms('cat', $catTermArr);
         $elasticaFilterAnd->addFilter($filterCat);
     }
     if (!empty($dateFrom) && !empty($dateTo)) {
         $filterDate = new Elastica_Filter_Range('date', array('from' => strftime('%F %T', strtotime($dateFrom)), 'to' => strftime('%F %T', strtotime($dateTo))));
         // $dates = new Elastica_Filter_Terms();
         // $dates->setTerms('date', array($dateFrom." -> ".$dateTo));
         // $elasticaFilterAnd->addFilter($dates);
         $elasticaFilterBool->addMust($filterDate);
     }
     // Create the actual search object with some data.
     $elasticaQuery = new Elastica_Query();
     $elasticaQuery->setQuery($elasticaQueryString);
     if (!empty($tagTerm) || !empty($authorTerm) || !empty($catTerm) || !empty($dateFrom) || !empty($dateTo)) {
         // $elasticaQuery->setFilter($elasticaFilterAnd);
         $elasticaQuery->setFilter($elasticaFilterBool);
     }
     if ($offset) {
         $elasticaQuery->setFrom($offset);
     }
     if ($limit) {
         $elasticaQuery->setLimit($limit);
     }
     //Check facet fields
     if (!empty($facets)) {
         $facet_arr = array();
         foreach ($facets as $facet) {
             ${$facet . "_facet"} = new Elastica_Facet_Terms($facet);
             ${$facet . "_facet"}->setField($facet);
             ${$facet . "_facet"}->setSize(10);
             ${$facet . "_facet"}->setOrder('reverse_count');
             array_push($facet_arr, ${$facet . "_facet"});
         }
         $elasticaQuery->setFacets($facet_arr);
     }
     //Search on the index.
     if ($indexType) {
         $elasticaResultSet = $this->elastic_search_client->getIndex($indexName)->getType($indexType)->search($elasticaQuery);
     } else {
         $elasticaResultSet = $this->elastic_search_client->getIndex($indexName)->search($elasticaQuery);
     }
     return $elasticaResultSet;
 }