Группировать в Elastica PHP?
Там нет абсолютно никакой документации о группе в Elastica. Есть идеи, если такая агрегация существует?
Я видел, что это возможно сделать с помощью необработанного запроса, но я не могу объединить необработанные результаты запроса с моими результатами, написанными так
$bool_sub = new \Elastica\Query\Bool();
$bool->addMust($bool_sub);
$query->setFilter($bool);
И в любом случае, group by, согласно документации Elasticsearch, подсчитывает результаты в зависимости от одного критерия, но я хочу сделать SQL-подобную группу, где цель состоит в том, чтобы объединить все идентичные строки.
1 ответ
Да, это возможно. Вы должны использовать метод addAggregation
,
Например elasticsearch
запрос:
{
"aggs" : {
"genders" : {
"terms" : { "field" : "gender" }
}
}
}
Смотрит в elastica
как это:
use Elastica\Aggregation\Terms;
use Elastica\Query;
// set up the aggregation
$termsAgg = new Terms("genders");
$termsAgg->setField("gender");
// add the aggregation to a Query object
$query = new Query();
$query->addAggregation($termsAgg);
// retrieve the results
$index = $elasticaClient->getIndex('someindex');
$buckets = $index->search($query)->getAggregation("genders");