我有一个查询,使用function_score对结果进行排名。这是返回的示例:

 {
    "_index": "clone",
    "_type": "authEvent",
    "_id": "6431823",
    "_score": 4.8,
    "fields": {
       "authInput.uID": "MPXWDKW2P",
       "authResult.productValue": 1,
       "authInput.userName": "F936F3AA-E26C-48DB-BDBC-44956B634260",
       "authResult.authEventDate": "2014-02-27T09:29:30.703125-06:00",
       "authResult.rulesFailed": [
          "AuthCountByUser"
       ]
    }
 }

我想要的是获取结果并运行与该SQL语句等效的结果:
SELECT TOP 20 "authInput.userName", SUM("_score")
FROM foo
GROUP BY "authInput.userName"
ORDER BY SUM("_score") DESC

如何使用ES做到这一点?
注意:我使用的是ES 0.9x,我们将很快升级到1.0.0,但我们还没有。

最佳答案

使用构面查询可获取查询中返回的总数,其中构面包含您需要计数的字段

10-06 10:49