Группировать в 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");
Другие вопросы по тегам