2013-03-06 45 views
2

我是elasticsearch的新尝试,并尝试与elastica相处。我试图找出当它们中的一个是2和/或7时,项目经常在项目集合中找到什么。因此,索引包含很多嵌套的项目集合。共同项目将被提取facet。但我似乎并没有得到转化为弹性弯曲以下查询:elastica与条款和方面

curl -X POST "http://localhost:9200/ratings/rating/_search?pretty=true" -d ' 
{ 
    "query": { 
    "terms": { 
     "bookid": [2, 7], 
     "minimum_match" : 1 
    } 
    }, 
    "size": 0, 
    "facets": { 
    "bookid": { 
     "terms": { 
     "field": "bookid" 
     } 
    } 
    } 
}' 

我是想这样的:

 // Load index 
     $index = $client->getIndex('ratings'); 
     $type = $index->getType('rating'); 


     // We want a Terms query. 
     $query = new Elastica_Query_Terms(); 


     // Setting Terms 
     $query->setTerms('bookid', $bookids); 

     // Facets 
     $facet = new Elastica_Facet_Query('matches'); 
     $facet->setField('bookid') 
      ->setSize(100); 
     $facet->setQuery($query); 

     $resultSet = $type->search($query); 
     return $resultSet; 

,但至今没有运气。如何添加构面属性?

回答

1

Elastica查询类有一个addFacet方法,因此不是在facet上设置查询,而是将方面添加到查询中更有意义。

$facet = new Elastica_Facet_Query('matches'); 
$facet->setField('bookid') 
     ->setSize(100); 

$query = new Elastica_Query_Terms(); 
$query->setTerms('bookid', $bookids); 
$query->addFacet($facet);