Как создать внутренний родительский дочерний запрос с помощьюasticsearchDSL Builder

Используя ONGR / ElasticsearchDSL, я пытаюсь добавить запрос родительского дочернего внутреннего попадания. В примере документации указано, что правильный способ сделать это

{
"inner_hits" : {
"children" : {
"type" : {
"article" : {
"query" : {
"match" : {"title" : "[actual query]"}
}
}
}
}
}
}
And now the query via DSL:

$matchQuery = new MatchQuery('title', '[actual query]');
$innerHit = new ParentInnerHit('children', 'article', $matchQuery);

$search = new Search();
$search->addInnerHit($innerHit);
$search->toArray();

Так что для моего сценария я сделал:

$termQuery = new TermQuery('user', $query);
$innerHit = new ParentInnerHit('child_type', 'parent_type', $termQuery);
$search->addInnerHit($innerHit);

Моя проблема в том, что я получаю сообщение об ошибке:

Catchable fatal error: Argument 3 passed to
ONGR\ElasticsearchDSL\InerHit\NestedInnerHit::__construct()
must be an instance of ONGR\ElasticsearchDSL\Search,
instance of ONGR\ElasticsearchDSL\Query\TermLevel\TermQuery
give defined in ../ongr/elasticsearch-dsl/src/InnerHit/NestedInnerHit.php
on line 46

Есть мысли или предложения?

0

Решение

Как видно из исключения ParentInnerHit ожидает Поиск вместо запроса, что имеет смысл. Для построения желаемого запроса вам необходимо:

$termQuery = new TermQuery('user', $query);
$searchObject = new Search();
$search->addQuery($termQuery);
$innerHit = new ParentInnerHit('child_type', 'parent_type', $searchObject);
$search->addInnerHit($innerHit);

Не проверял это, но вы должны понять.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]