Elasti c Поисковая агрегация по хроноплету - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть индекс документов, которые содержат почтовый индекс человека и этническую принадлежность. Я хотел бы объединить документы по почтовому индексу, чтобы создать слой хлороплетов на карте. На карте будет отображаться каждый многоугольник почтового индекса цветом, который отражает процент людей в этом почтовом индексе, которые являются кавказскими. Как я могу сделать это в Elasti c Поиск? Обратите внимание, что мне не нужно или не нужно возвращать какие-либо другие данные, хранящиеся в документах, кроме количества документов в каждом сегменте почтового индекса, которые являются кавказскими, и общего количества документов в каждом сегменте почтового индекса. Клиент отобразит суммы и среднее значение.

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

Или я могу запустить агрегирование по почтовому индексу и вложенную агрегацию по этнической принадлежности, которая включает в себя только документы с этнической принадлежностью «кавказский». Это работает, но опять же может быть излишним. Мой запрос эластичного поиска выглядит следующим образом ...

`{
    "aggs": {
        "zips": {
            "terms": {
                "field": "home_zip.keyword",
                "size": 10000
            },
            "aggs": {
                "ethnicity": {
                    "terms": {
                        "field": "ethnicity.keyword",
                        "include": "caucasian"
                    }
                }
            }
        }
    }
}`

Ответ включает в себя общее количество документов в каждом сегменте почтового индекса, а также общее количество документов в каждой этнической подгруппе. Это две части данных, которые нам нужны. Существует ли более простой или более быстрый запрос?

Другая идея состоит в том, чтобы запустить агрегированное суммирование по сценарию, которое присваивает значение 1 каждому документу, содержащему этническую принадлежность «кавказец», и значение 0 каждому документу, который не содержит этническая принадлежность "кавказская. Как будет выглядеть этот код запроса?

...