Как объединить документ с глубоким вложением в эластичный поиск - построенный с помощью рекурсии - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть структура документа, похожая на

{
    "orderNo": "123O",
    "tradeNo": "567T",
    "orderConsideration": 10,
    "children": [{
        "orderNo": "124O",
        "tradeNo": "566T",
        "orderConsideration": 15,
        "children": [{
            "orderNo": "126O",
            "tradeNo": "565T",
            "orderConsideration": 20,
            "children": [{
                "orderNo": "127O",
                "tradeNo": "564T",
                "orderConsideration": 25,
                "children": [{
                    "orderNo": "128O",
                    "tradeNo": "563T",
                    "orderConsideration": 30,
                    "children": []
                }]
            }]
        }]
    }]
}

И я могу отправить поисковый запрос примерно так:

GET /data_nested_test/_search
{
    "size": 0,
    "aggs": {
        "group_by_nested": {
            "nested": {
                "path": "children"
            },
            "aggs": {
                "sum_by_consideration": {
                    "sum": {
                        "field": "children.orderConsideration"
                    }
                }
            }
        }
    }
}

Но это будет совпадать только на первом уровне пути, есть ли способ создать вложенную агрегацию для каждого уровня (это может быть 10 глубин или, может быть, больше), чтобы эластик мог следовать по пути вложенного документ до конца и собирать каждое найденное поле?

Таким образом, ответ выше будет

 100

Спасибо!

...