use*_*791 8 php curl elasticsearch
我刚开始使用elasticsearch.我想在php中使用cURL进行查询.
这段代码什么都没有...(如果我从命令行执行,请参阅下面的错误.我不确定这个错误是否是由于控制台中的换行...)
$url = "curl -s -XGET http://<my_url>:9200/idx_occurrence/Occurrence/_search -d '
{
'filtered' : {
'query' : {
'term' : { 'kingdom_interpreted' : 'Plantae' }
}
}
}' ";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
$return=curl_exec($ch);
var_dump($return);
Run Code Online (Sandbox Code Playgroud)
但如果我使用这个网址 http://<my_url>:9200/idx_occurrence/Occurrence/_search?q=kingdom_interpreted:Plantae
然后我从cURL得到结果.
也许可能查询过滤器不正确?(我尝试了几个选项没有成功)
错误:{"error":"SearchPhaseExecutionException [无法执行阶段[查询],完全失败; shardFailures {[AS6HqxgNRtyU9-pQKhJsXQ] [idx_occurrence] [3]:SearchParseException [[idx_occurrence] [3]:from [-1], size [-1]:解析失败[无法解析源[\n {\n已过滤:{\n查询:{\n term:{kingdom:Plantae} \n} \n} \n} \n}]]];嵌套:SearchParseException [[idx_occurrence] [3]:from [-1],size [-1]:Parse Failure [没有解析器元素[filtered]]];} {[AS6HqxgNRtyU9-pQKhJsXQ] [idx_occurrence] [2]:SearchParseException [[idx_occurrence] [2]:from [-1],size [-1]:Parse Failure [无法解析源[\n {\n filtered:{\n query:{\n term:{kingdom:Plantae}} \n} \n} \n}]]];嵌套:SearchParseException [[idx_occurrence] [2]:from [-1],size [-1]:Parse Failure [没有元素[filtered]的解析器]];} ]", "状态":500}
我一直在使用Elastica PHP库进行弹性搜索交互:
https://github.com/ruflin/Elastica
它的学习曲线很短.这是一个例子:
$client = new Elastica_Client();
$index = $client->getIndex('idx_occurrence');
$index->getType('Occurrence');
$query_string = new Elastica_Query_QueryString('Plantae');
$query_string->setFields(array('kingdom_interpreted'));
$query = new Elastica_Query($query_string);
$index->refresh();
$searchResults = $index->search($query);
Run Code Online (Sandbox Code Playgroud)
这说明了限制于特定字段的查询字符串搜索.$searchResults
是一个Elastica_ResultSet
对象数组.我喜欢Elastica,因为它抽象出任何与cURL相关的问题.
小智 5
这是一个简单的请求演示:
$param = "
{
'filtered' : {
'query' : {
'term' : { 'kingdom_interpreted' : 'Plantae' }
}
}
}";
$header = array(
"content-type: application/x-www-form-urlencoded; charset=UTF-8"
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://xxxxx:9200/idx_occurrence/Occurrence/_search");
curl_setopt($curl,CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
$res = curl_exec($curl);
curl_close($curl);
return $res;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25487 次 |
最近记录: |