中是否有任何方法可以在URL中传递脚本?
我有问题的Elasticsearch脚本过滤器和Curl post URI。
我使用URL传递值,如下所示
我的URL带参数
$params = rawurlencode('firstName:John');
$url= 'http://localhost:9200/jdbc/_search?q='.$params.'&pretty=true';
My Json code:
$options='{
"query": {
"filtered": {
"filter": {
"script": {
"script": "(min..max).contains(doc.admitted_date.date.year)",
"params": {
"min": 1999,
"max": 2000
}
}
}
}
},
"aggs": {
"citycount": {
"cardinality": {
"field": "cityid",
"precision_threshold": 100
}
}
}
}';
旋度传递:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$options);
ob_start();
curl_exec ($ch);
curl_close ($ch);
$data = ob_get_contents();
ob_end_clean();
当我通过上面的查询时,它显示错误的结果。因为我们用URL和JSON两种格式传递参数。有一次它只从URL获取参数。有没有办法同时传递两个参数,或者有没有别的方法传递这个?在Elasticsearch PHP
正确的方法是在查询中传递所有内容,包括firstName
字段上的匹配:
$options='{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "firstName:John"
}
},
"filter": {
"script": {
"script": "(min..max).contains(doc.admitted_date.date.year)",
"params": {
"min": 1999,
"max": 2000
}
}
}
}
},
"aggs": {
"citycount": {
"cardinality": {
"field": "cityid",
"precision_threshold": 100
}
}
}
}';
$url= 'http://localhost:9200/jdbc/_search?pretty=true';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1); <---- also add this
curl_setopt($ch, CURLOPT_POSTFIELDS, $options);
ob_start();
curl_exec ($ch);
curl_close ($ch);
$data = ob_get_contents();
ob_end_clean();