Использовать вычисленное значение в агрегации диапазона Elasticsearch - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу использовать агрегирование диапазона в вычисляемом поле. На данный момент у меня есть запрос:

...
"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
                        }
                    ]
                }
            }
        }
    }
}
...

Несколько карт могут иметь одинаковый вопрос_ид. Теперь у меня есть диапазоны, которые содержат количество оценок на диапазон. Но я хочу иметь диапазоны, содержащие количество вопросов , чье среднее по карте применяется к диапазонам. Примерно так:

...
"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
                        }
                    ]
                }
            }
        }
    }
}
...

Конечно, это не работает, но чтобы показать вам, что я имею в виду. Можно использовать «скрипт» вместо «поля», но я не могу вычислить среднее значение в скрипте (по крайней мере, я не знаю, как).

Кто-нибудь знает способ решить эту проблему?

...