在Elasticsearch范围聚合中使用计算值

时间:2020-02-20 17:52:05

标签: elasticsearch aggregation

我想在计算字段上使用范围聚合。我到目前为止的查询:

...
"aggs": {
    "ratings": {
            "terms": {
                "field": "card.question_id",
                "size": 10000
            },
            "aggs": {
            "ratings": {
                "range": {
                    "field": "card.rating",
                    "ranges": [
                        {
                            "from": 0.0,
                            "to": 0.5
                        },
                        {
                            "from": 0.5,
                            "to": 1.1
                        }
                    ]
                }
            }
        }
    }
}
...

多张卡片可以具有相同的question_id。我现在所拥有的范围是包含每个范围的评分量的范围。但是我想要的是包含问题数量的范围,其卡均值应用于范围。也许像这样:

...
"aggs": {
    "ratings": {
            "terms": {
                "field": "card.question_id",
                "size": 10000
            },
            "aggs": {
            "ratings": {
                "range": {
                    "avg" : { "field" : "card.rating" },
                    "ranges": [
                        {
                            "from": 0.0,
                            "to": 0.5
                        },
                        {
                            "from": 0.5,
                            "to": 1.1
                        }
                    ]
                }
            }
        }
    }
}
...

当然,这行不通,但是请告诉我我的意思。可以使用“脚本”代替“字段”,但是我无法计算脚本的平均值(至少我不知道如何)。

有人知道解决这个问题的方法吗?

0 个答案:

没有答案