PHP的json_decode返回NULL,带有elasticsearch查询结果

时间:2016-07-08 09:39:02

标签: php json elasticsearch

我在这里看到过类似的问题,但没有一个人可能会对手头的问题有所了解。

这是我尝试运行的代码:

require '../vendor/autoload.php';

$client = Elasticsearch\ClientBuilder::create()->build();

$params = [
    'index' => 'search_log',
    'type' => 'search_log',
    'body' => [
        'size' => 0,
        'aggs' => [
            'popular_terms' => [
                'terms' => [
                    'field' => 'filteredSearch'
                ]
            ]
        ]
    ]
];

// Execute query
$response = $client->search($params);

// Decode response
$myData = json_decode($response);
var_dump($myData);

我得到的输出:

NULL

我将问题缩小到解码部分。如果我执行$ response的print_r,这就是我得到的(实际上所有这些都在一行中,我已经手动打印它,因此它更容易阅读):

Array (
    [took] => 245
    [timed_out] =>
    [_shards] => Array (
        [total] => 5
        [successful] => 5
        [failed] => 0
    )
    [hits] => Array (
        [total] => 5124004
        [max_score] => 0
        [hits] => Array ( )
    )
    [aggregations] => Array (
        [popular_terms] => Array (
            [doc_count_error_upper_bound] => 37750
            [sum_other_doc_count] => 11388032
            [buckets] => Array (
                [0] => Array (
                    [key] => term1
                    [doc_count] => 385107
                )
                [1] => Array (
                    [key] => term2
                    [doc_count] => 169381
                )
                [2] => Array (
                    [key] => term3
                    [doc_count] => 155258
                )
                [3] => Array (
                    [key] => term4
                    [doc_count] => 150382
                )
                [4] => Array (
                    [key] => term5
                    [doc_count] => 124759
                )
                [5] => Array (
                    [key] => term6
                    [doc_count] => 102589
                )
                [6] => Array (
                    [key] => term7
                    [doc_count] => 98791
                )
                [7] => Array (
                    [key] => term8
                    [doc_count] => 98772
                )
                [8] => Array (
                    [key] => term9
                    [doc_count] => 98091
                )
                [9] => Array (
                    [key] => term10
                    [doc_count] => 94559
                )
            )
        )
    )
)

我想要的结果是只打印term1,term2等,而不会出现Elasticsearch响应中的其他内容。

0 个答案:

没有答案