Перейти к содержанию

Range aggregation

Агрегация на фиксированное число корзин — заданных диапазонов. Запрос примерно такой:

{
    "aggs": {
        "income_ranges": {
            "range": {
                "field": "income",
                "keyed": true,
                "ranges": [
                    { "from": 0, "to": 1 },
                    { "from": 1, "to": 100000 },
                    { "from": 100000, "to": 250000 },
                    { "from": 250000, "to": 500000 },
                    { "from": 500000, "to": 1000000 },
                    { "from": 1000000, "to": 2000000 },
                    { "from": 2000000, "to": 5000000 },
                    { "from": 5000000, "to": 10000000 },
                    { "from": 10000000, "to": 20000000 },
                    { "from": 20000000, "to": 40000000 },
                    { "from": 40000000, "to": 100000000 },
                    { "from": 100000000, "to": 500000000 },
                    { "from": 500000000, "to": 1000000000 },
                    { "from": 1000000000 }
                    ]
                }
        }
    }
}

При этом to ВХОДИТ в диапазон, а from — НЕ ВХОДИТ. Иными словами, { "from": 0, "to": 1 }[0,1)
В корзины попадают только документы с имеющимися значениями, так что если нужно учесть также количество документов БЕЗ значения, R.A. удобно использовать в связке с Missing, примерно так:
{
    "aggs": {
        "income_ranges": {
            "range": {
                "field": "income",
                "keyed": true,
                "ranges": [
                    { "from": 0, "to": 1 },
                    { "from": 1, "to": 100000 },
                    { "from": 100000, "to": 250000 },
                    { "from": 250000, "to": 500000 },
                    { "from": 500000, "to": 1000000 },
                    { "from": 1000000, "to": 2000000 },
                    { "from": 2000000, "to": 5000000 },
                    { "from": 5000000, "to": 10000000 },
                    { "from": 10000000, "to": 20000000 },
                    { "from": 20000000, "to": 40000000 },
                    { "from": 40000000, "to": 100000000 },
                    { "from": 100000000, "to": 500000000 },
                    { "from": 500000000, "to": 1000000000 },
                    { "from": 1000000000 }
                    ]
                }
        },
        "no_income": {
            "missing": {"field": "income"}
        }
    }
}

Ссылки

https://www.elastic.co/guide/en/elasticsearch/reference/7.8/search-aggregations-bucket-range-aggregation.html


Последнее обновление : 1 июля 2023 г.
Дата создания : 12 июля 2022 г.

Комментарии

Комментарии