为什么这个urlencode JSON GET请求不起作用?

时间:2017-10-29 09:15:18

标签: php json curl elasticsearch get

$word = $_GET['search'];
$json = json_encode('{"query":{"match":{"name":"'.$word.'"}}}');
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://10.128.0.2:9200/testers/test/_search' . urlencode($json));
$resp = curl_exec($curl);

从网址填写$ word,这是正常的。 $ resp没有带回任何价值。 'name'是elasticsearch字段的名称。

我正在使用PHP来运行此curl请求as per elasticserch,除了一个URL中的所有内容。有没有更好的方法从PHP代码执行此操作?

1 个答案:

答案 0 :(得分:2)

如果您正在使用GET调用,则需要在source查询字符串参数中传递查询:

curl_setopt($curl, CURLOPT_URL, 'http://10.128.0.2:9200/testers/test/_search?source=' . urlencode($json));