elasticsearch,Php,Database,Http,elasticsearch" /> elasticsearch,Php,Database,Http,elasticsearch" />

PHP文件_get_contents()在发出get请求时忽略请求正文

PHP文件_get_contents()在发出get请求时忽略请求正文,php,database,http,elasticsearch,Php,Database,Http,elasticsearch,我试图发出一个简单的HTTP GET请求来查询Elasticsearch。Elasticsearch语法允许在GET请求中使用请求正文来添加附加查询选项。我正在使用PHP函数file\u get\u contents()发出get请求 问题是,在发出get请求时,file_get_contents()似乎忽略了请求的主体,而在使用POST请求时,它工作正常 如何获取文件\u get\u contents()以正确处理get请求的正文? 我使用的代码如下所示 请注意: 我想使用file\u ge

我试图发出一个简单的HTTP GET请求来查询Elasticsearch。Elasticsearch语法允许在GET请求中使用请求正文来添加附加查询选项。我正在使用PHP函数file\u get\u contents()发出get请求

问题是,在发出get请求时,file_get_contents()似乎忽略了请求的主体,而在使用POST请求时,它工作正常

如何获取文件\u get\u contents()以正确处理get请求的正文? 我使用的代码如下所示

请注意:

  • 我想使用file\u get\u contents()来实现这一点,不是phpcURL、phpRequest2elasticsearch php
  • 我想将此保留为GET请求,将其改为POST请求不是我想要的
提前谢谢

$url = "example-elasticsearch-url-here.com/index/_search";
$body=<<<EOD
  {
    "_source": ["email"],
    "size":10,
    "query":{
       "match_all" : {}
    }
  }
  EOD;

$contextData = array (
                      'method' => 'GET',
                      'header' => "Content-Type: application/json\r\n".
                      'ssl'=>array(
                             "verify_peer"=>false,
                             "verify_peer_name"=>false,
                             ),
                      'content'=> $body
                      );

$context = stream_context_create (array ( 'https' => $contextData ));
try {
     $result =  file_get_contents ($url,false,$context);
} catch (Exception $e) {
     $result = false;
}
echo $result;
$url=“example elasticsearch url here.com/index/\u search”;
$body=数组(
“验证对等”=>错误,
“验证对等名称”=>false,
),
“内容”=>$body
);
$context=stream\u context\u create(数组('https'=>$contextData));
试一试{
$result=file\u get\u contents($url,false,$context);
}捕获(例外$e){
$result=false;
}
回声$结果;

如果您在
$context
中使用
http
而不是
https
作为键名,它是否有效?

不,我的elasticsearch使用的是httpsI know,但据我所知,无论使用的是http还是https,键名都需要保持在
http
。谢谢!那奏效了。。我现在觉得自己很傻呵呵。。简单的修复。我很快就会接受你的回答,非常感谢!