用于弹性搜索的PHP客户端上嵌套语法的inner_hits似乎不起作用

时间:2017-03-09 13:58:12

标签: elasticsearch kibana

我正在使用弹性搜索的PHP客户端(5.2.0)并且无法获取inner_hits结果,这是我的PHP查询(不返回inner_hits)

    $params = [
    'index'  => 'caption_index',
    'type'   => 'caption',
    'body'   => [
        'query' => [
            'nested' => [
                'path' => 'lines',
                'query' => [
                    'bool' => [
                        'must' => [
                            ['match' => ['lines.content' => 'Totally different text' ]]
                        ]
                    ]
                ],
                'inner_hits' => [ ]

            ]
        ]
    ],
    'client' => [ 'ignore' => 404 ] 
]; 
$results = $client->search($params);

同时我在Kibana上运行相同的请求,我确实得到了正确的答案

    GET /caption_index/caption/_search
{
    "query": {
        "nested" : {
            "path" :  "lines" ,
            "query": {
              "bool" : {
                "must": [
                  {
                    "match" : 
                    { "lines.content" : "Totally different text" }
                  }
                ] 
              }
            },
            "inner_hits" : {}
        }
    }
}

知道有什么区别以及为什么PHP不会显示结果?

我可以附上当前的结果,但在这种情况下似乎有点矫枉过正 - 相信我 - 内部命中不存在

1 个答案:

答案 0 :(得分:0)

我遇到了与ES PHP API相同的问题,通过在inner_hits数组中包含一个参数来实现它。

例如:

'inner_hits' => ['name' => 'any-name']

您可以找到允许的参数here