Php Elasticsearch-不同客户端的不同结果
我正在尝试将Elasticsearch与PHP客户端一起使用。然而,当我构造一个简单的查询时,它对同一索引给出的结果与我认为的通过Curl或Python的等价查询截然不同。也就是说,结果与查询完全无关——看起来像是一个随机的数据块。无论我发送的参数(姓氏)的值是多少,它都会返回相同的结果。以下是PHP代码:Php Elasticsearch-不同客户端的不同结果,php,curl,
elasticsearch,Php,Curl,
elasticsearch,我正在尝试将Elasticsearch与PHP客户端一起使用。然而,当我构造一个简单的查询时,它对同一索引给出的结果与我认为的通过Curl或Python的等价查询截然不同。也就是说,结果与查询完全无关——看起来像是一个随机的数据块。无论我发送的参数(姓氏)的值是多少,它都会返回相同的结果。以下是PHP代码: <?php require 'vendor/autoload.php'; use Elasticsearch\ClientBuilder; $client = ClientBuil
<?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);
?>
提前感谢您的建议 您收到的错误来自
SmartSerializer.php
$data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION);
您可以看到,第二个参数JSON\u PRESERVE\u ZERO\u FRACTION
已经添加进来,它也
因此,问题在于您使用的是最新版本的elasticsearch php,它需要php 5.6.6,但您的php版本低于此版本,因此,
JSON\u PRESERVE\u ZERO\u分数
在您的php版本中不存在。您能删除$client->search前面的@吗?你可能有一些错误被掩盖了。对不起,我漏掉了错误部分。client->search调用确实给出了这个错误:警告:json_encode()希望参数2很长,字符串在第30行的/Library/WebServer/Documents/es/vendor/elasticsearch/elasticsearch/src/elasticsearch/Serializers/SmartSerializer.php中给出,非常感谢-我升级到了7.1,问题确实解决了!很酷,很高兴它有帮助!我很乐意,但我看不到这个选择。。。我会随便看看。
$data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION);