[英]elasticsearch query and cURL in PHP no results
我试图使用PHP执行cURL请求并将curl var_dump输出分离为不同的变量?但是在php中没有显示任何内容,并且在PHP日志中没有错误。
这是我的代码:
$url='curl -XGET <my_url>:9200/logstash-index-*/_search?pretty -d \'
{
"size": 0,
"aggs" : {
"langs" : {
"terms" : {
"field" : "name" ,
"size": 0
}
}
}
}\'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec ($ch);
curl_close ($ch);
$data = ob_get_contents();
ob_end_clean();
var_dump($data);
感谢帮助!
您目前在这里混淆了两件事:linux cURL命令和php_curl命令。
这是一个Linux命令,例如键入bash / sh:
curl -XGET <my_url>:9200/logstash-index-*/_search?pretty -d '
{
"size": 0,
"aggs" : {
"langs" : {
"terms" : {
"field" : "name" ,
"size": 0
}
}
}
}'
这是使用php_curl的相同示例:
$url = '<my_url>:9200/logstash-index-*/_search?pretty';
$data = array(
"size" => 0,
"aggs" => array (
"langs" => array (
"terms" => array (
"field" => "name" ,
"size" => 0
)
)
)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$return = curl_exec($ch) or die(curl_error());
curl_close($ch);
//var_dump($return);
//return is json_encoded, you can decode it to have an array
$array_return = json_decode($return,true);
$aggregationsArray = array();
foreach($array_return['aggregations']['name']['buckets'] as $person)
{
$aggregationsArray[$person['key']] = $person['doc_count'];
}
var_dump($aggregationsArray);
Edit1:发布数据必须为json_encoded
Edit2:返回值是json_encoded,使用json_decode对其进行解码
Edit3:添加自定义循环
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.