Поиск вложенных данных - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно сделать агрегацию во вложенных данных

 {
    "size": 0,
    "aggs": {
        "group_by_day": {
            "date_histogram": {
                "field": "timestamp",
                "interval": "day"
            },
            "aggs": {
                "corridors": {
                    "nested": {
                        "path": "rowData"
                    },
                    "aggs": {
                        "Entrance": {
                            "filter": {
                                "match": {
                                    "rowData.corridors.name": "Office"
                                }
                            },
                            "aggs": {
                                "SumExit": {
                                    "sum": {
                                        "field": "rowData.corridors.north"
                                    }
                                },
                                "SumIn": {
                                    "sum": {
                                        "field": "rowData.corridors.south"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "query": {
        "bool": {
            "must": [
                {
                    "range": {
                        "timestamp": {
                            "gte": "2019-06-10T00:00:00.000",
                            "lte": "2019-06-18T06:11:18.618Z"
                        }
                    }
                },
                {
                    "term": {
                        "account": "5ca195b535374512130add60"
                    }
                },
                {
                    "term": {
                        "device._id": "5cae98291b97031201d797a0"
                    }
                }
            ]
        }
    }
}

это пример данных, которые я получил

{
    "corridor": [
        {
            "name": "Entrance",
            "south": 2,
            "north": 1
        },
        {
            "name": "Office",
            "south": 2,
            "north": 1
        }
    ]
}

мне нужно агрегировать сумму севера и юга в соответствии с именем ex: вход, но запрос, который я пишу, дал мне сумму как входа, так и офиса. Как я могу фильтровать, получая только сумму входа

1 Ответ

0 голосов
/ 24 июня 2019

В вашем случае это rowData.corridors, что нужно для вложенного поля. Итак, если я предполагаю, что ваше отображение корректно, вам нужно только исправить эту часть вашей агрегации:

"aggs": {
    "corridors": {
        "nested": {
            "path": "rowData.corridors" <-- HERE
        },
...

Кажется, что настроенное вложенное поле в вашем отображении является rowData. Но с этой конфигурацией все коридоры сплющены во вложенных документах "rowData".

Надеюсь, мой ответ достаточно ясен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...