2017-01-01 23 views
0

私はElasticsearchをPHPクライアントで使用しようとしています。しかし、単純なクエリを作成すると、CurlやPythonによる同等のクエリと同じインデックスに対して、大幅に異なる結果が得られます。つまり、結果は完全にクエリとは無関係です。ランダムなデータのように見えます。また、送信するパラメータ(姓)の値に関係なく、同じ結果が返されます。ここではPHPのコードは次のとおりです。任意の提案を事前に弾性検索 - 異なるクライアントで異なる結果

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

ありがとう:

<?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); 
?> 

そして、ここでは正確な結果を返すカールと同等で、です!

+0

$ client-> searchの前に@を削除できますか?おそらく、マスクされているいくつかのエラーがあります。 – nikoshr

+0

私の謝罪、私はエラーの部分を残しました。 'Warning:json_encode()は、パラメータ2がlongであることを期待しています。/ Library/WebServer/Documents/es/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Serializers/SmartSerializerで指定した文字列です。 php on line 30' – Tiggyboo

答えて

0

あなたが取得しているエラーはあなたがまたrequires PHP version 5.6.6

だから、問題は事実から来ている、第二引数JSON_PRESERVE_ZERO_FRACTIONthis commitに追加されていることがわかりますSmartSerializer.php

$data = json_encode($data, JSON_PRESERVE_ZERO_FRACTION); 

this lineから来ていますPHP 5.6.6が必要な最新バージョンのelasticsearch-phpを使用していますが、PHPのバージョンがそれよりも低いため、PHPのバージョンにはJSON_PRESERVE_ZERO_FRACTIONが存在しません。

+0

ありがとうございました - 私は7.1にアップグレードし、問題は本当に遠ざかりました! – Tiggyboo

+0

クール、嬉しい助け! – Val

+0

うれしいことですが、私はその選択肢を見ていない...ビット周りを突く。 – Tiggyboo

関連する問題