Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用elasticsearchDSL Builder创建父子内部命中查询_Php_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Dsl_Ongr - Fatal编程技术网 elasticsearch,dsl,ongr,Php,elasticsearch,Dsl,Ongr" /> elasticsearch,dsl,ongr,Php,elasticsearch,Dsl,Ongr" />

Php 如何使用elasticsearchDSL Builder创建父子内部命中查询

Php 如何使用elasticsearchDSL Builder创建父子内部命中查询,php,elasticsearch,dsl,ongr,Php,elasticsearch,Dsl,Ongr,使用ONGR/ElasticsearchDSL,我试图添加一个父子内部命中查询。示例文档表明,正确的方法是 { "inner_hits" : { "children" : { "type" : { "article" : { "query" : { "match" : {"title" : "[actual query]"}

使用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

有什么想法或建议吗?

正如您从exception
ParentInnerHit
中所看到的,ParentInnerHit期待的是搜索而不是查询,这很有意义。要生成所需的查询,您必须:

$termQuery = new TermQuery('user', $query);
$searchObject = new Search();
$search->addQuery($termQuery);
$innerHit = new ParentInnerHit('child_type', 'parent_type', $searchObject);
$search->addInnerHit($innerHit);
我没有测试这个,但是你应该知道