尝试使用PHP cURL实现对Elasticsearch索引的jQuery / AJAX即时搜索,该索引应按共享字段值对项目进行分组,并获取另一个字段值中可用的最低值。索引中的项目具有ID,名称,价格。几件商品将具有相同的ID,略有不同的名称和不同的价格。搜索是针对名称字段的,并且应该将具有相同ID的项目分组,并获取最低的价格(这是用于价格比较演示项目)。如何做到这一点?我现在有以下位置,
... get search input $searchQuery with $_GET[] ...
$query = '{
"query" : {
"term" : { "name" : "'.$searchQuery.'" }
}
}';
... cURL request curl_setopt($ch, CURLOPT_POSTFIELDS, $query) ...
搜索有效,但显示名称与搜索输入匹配的所有项目,这就是为什么
...仅在搜索结果中显示一项,其中显示一项名称+最低可用价格。
这是否可以全部用ES完成,还是需要PHP来分组/获取必要的值?
谢谢
答案 0 :(得分:0)
尝试以下查询:
$qyery =
'{
"query": {
"term": {
"name": {
"value": "'.$searchQuery.'"
}
}
},
"aggs": {
"group_by_id": {
"terms": {
"field": "ID",
"size": 10000
},
"aggs": {
"min_price_in_group": {
"min": {
"field": "price"
}
}
}
}
},
"size": 0
}';