猿问

在PHP中使用CURL查询ElasticSearch时遇到问题

我在AWS-EC2实例上运行弹性搜索,并尝试通过curl查询它,但好像我的curl_exec()没有得到任何结果。当我尝试获得结果时,我得到的是以下内容


"Notice: Undefined offset: 0 in /var/www/html/DatabasePage.php on line 35" error



    function curlElastic(){


            $url = 'http://127.0.0.1:9200/resumes/test_resumes/_search/';

            $param = "

            {

                    'query' : {

                            'match' : {'degree type': 'Masters'}

            }";

            $header = array(

                    'Content-Type: application/json'

            );


            $ch = curl_init();

            curl_setopt($ch,CURLOPT_URL, $url);

            curl_setopt($ch,CURLOPT_HTTPHEADER, $header);

            curl_setopt($ch,CURLOPT_POSTFIELDS, $param);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            $res = curl_exec($ch);

            curl_close($ch);

            return $res;

    }


     if (isset($_POST['search'])) {


            $data = curlElastic();

            $dataArr = json_decode($data, true);

            $result = count($dataArr[0]["hits"]);

            // gives "Notice: Undefined offset: 0 in /var/www/html/DatabasePage.php on line 35" error

    }  

当我跑步时


curl -XGET "localhost:9200/resumes/test_resumes/_search"  -H 'Content-Type: application/json' -d '{"query":{"match":{"degree type": "Masters"}}}'



ITMISS
浏览 280回答 2
2回答

心有法竹

function curlElastic(){            $url = 'http://localhost:9200/resumes/test_resumes/_search/';            $param = array(                    "query" => array(                            "match" => array(                                    "degree type" => "Masters"                            )                    )            );            $header = array(                    'Content-Type: application/json'            );            $ch = curl_init();            curl_setopt($ch,CURLOPT_URL, $url);            curl_setopt($ch,CURLOPT_HTTPHEADER, $header);            curl_setopt($ch,CURLOPT_POSTFIELDS, json_encode($param));            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);            $res = curl_exec($ch);            if ($res === false)                     $res = 'curl error: ' . curl_error($ch);            echo 'stripslashes: ' .  stripslashes($res);            curl_close($ch);            return $res;    }     if (isset($_POST['search'])) {            $data = curlElastic();            $dataArr = json_decode($data, true);            $result = count($dataArr["hits"]);    }

犯罪嫌疑人X

建议:更好地使用ES的官方PHP客户端 https://github.com/elastic/elasticsearch-php不要尝试重新发明轮子... :)
随时随地看视频慕课网APP
我要回答