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'])); }
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); }
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']); }
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()); }
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'])); }
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()); }
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']); } } }
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(); }
/** * 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; }
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()); }
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; }