我有一个查询,使用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,但我们还没有。
最佳答案
使用构面查询可获取查询中返回的总数,其中构面包含您需要计数的字段