2017-03-22 7 views
0

ONGR/ElasticsearchDSL을 사용하여 부모 자식 내부 히트 쿼리를 추가하려고합니다. 예제 문서는이 작업을 수행 할 수있는 적절한 방법이 그래서 내가 한 내 시나리오elasticsearchDSL Builder로 부모 자식 내적 히트 쿼리를 만드는 방법

{ 
    "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 

의견이나 제안이 있으십니까?

답변

1

예외에서 볼 수 있듯이 ParentInnerHit은 쿼리 대신 검색이 필요하다고 생각합니다.

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

이 테스트하지 않았나요,하지만 당신은 아이디어를 얻을해야 원하는 쿼리를 작성하려면에 있습니다.