2017-03-22 7 views
0

ONGR/ElasticsearchDSLを使用して、親子のインナーヒットクエリを追加しようとしています。elasticsearchDSL Builderで親子のヒットクエリを作成する方法

$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 
例のドキュメントには、だから私はやった私のシナリオのためにこれを行うための適切な方法が

{ 
    "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(); 

にあることを示し、

ご意見やご提案はありますか?

答えて

1

例外からわかるように、ParentInnerHitはクエリの代わりに検索を期待していますが、意味があります。希望のクエリを作成するには、次の操作を行う必要があります。

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

これはテストしませんでしたが、そのアイデアを得る必要があります。

関連する問題