我正在尝试将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
提前感谢任何建议!
答案 0 :(得分:0)
您收到的错误来自$data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION);
JSON_PRESERVE_ZERO_FRACTION
您可以看到this commit中添加了第二个参数JSON_PRESERVE_ZERO_FRACTION
,requires PHP version 5.6.6
所以问题来自于你使用的是需要PHP 5.6.6的最新版本的elasticsearch-php,但是你的PHP版本低于那个,因此{{1}}不存在于你的PHP版本。