Elasticsearch - 与不同客户的不同结果

时间:2017-01-01 07:14:29

标签: php curl elasticsearch

我正在尝试将Elasticsearch与PHP客户端一起使用。但是,当我构造一个简单的查询时,它会针对相同的索引提供截然不同的结果,而不是我认为通过Curl或Python的等效查询。即,结果与查询完全无关 - 看起来像是随机数据块。无论我发送的参数(姓氏)的值如何,它也会返回相同的结果。这是PHP代码:

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

use Elasticsearch\ClientBuilder;

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

$params = [
    'index' => 'directory',
    'body' => [
        'query' => [
            'match' => [
                'last_name' => 'ely'
                ]
        ]
    ]
];
$response = @$client->search($params);
print_r($response);
?>

这是Curl的等价物,可以返回准确的结果:

http://localhost:9200/directory/_search?q=last_name:ely

提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

您收到的错误来自$data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION);

中的this line
JSON_PRESERVE_ZERO_FRACTION

您可以看到this commit中添加了第二个参数JSON_PRESERVE_ZERO_FRACTIONrequires PHP version 5.6.6

所以问题来自于你使用的是需要PHP 5.6.6的最新版本的elasticsearch-php,但是你的PHP版本低于那个,因此{{1}}不存在于你的PHP版本。