cURL Elasticsearch价格比较搜索aggs

时间:2018-10-13 12:25:51

标签: php elasticsearch curl

尝试使用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) ...

搜索有效,但显示名称与搜索输入匹配的所有项目,这就是为什么

  • 按ID值分组(汇总?)
  • 获取任何可用的名字或第一个可用的名字
  • 获取分组商品的最低价格

...仅在搜索结果中显示一项,其中显示一项名称+最低可用价格。

这是否可以全部用ES完成,还是需要PHP来分组/获取必要的值?

谢谢

1 个答案:

答案 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
    }';