【发布时间】:2016-02-26 07:08:15
【问题描述】:
我有一些看起来像的测试文档
"hits": {
...
"_source": {
"student": "DTWjkg",
"name": "My Name",
"grade": "A"
...
"student": "ggddee",
"name": "My Name2",
"grade": "B"
...
"student": "ggddee",
"name": "My Name3",
"grade": "A"
我想获得成绩为 B 的学生的百分比,假设只有 3 个学生,结果将是“33%”。
我将如何在 Elasticsearch 中执行此操作?
到目前为止,我有这个聚合,我觉得它很接近:
"aggs": {
"gradeBPercent": {
"terms": {
"field" : "grade",
"script" : "_value == 'B'"
}
}
}
这会返回:
"aggregations": {
"gradeBPercent": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "false",
"doc_count": 2
},
{
"key": "true",
"doc_count": 1
}
]
}
}
我并不一定要寻找确切的答案,也许我可以用谷歌搜索我可以使用的术语和关键字。我已经阅读了 elasticsearch 文档,但没有找到任何可以提供帮助的内容。
【问题讨论】:
-
对我来说,这是一个很好的功能想法,你应该把它推荐给 ES 团队。