У меня есть индекс документов, которые содержат почтовый индекс человека и этническую принадлежность. Я хотел бы объединить документы по почтовому индексу, чтобы создать слой хлороплетов на карте. На карте будет отображаться каждый многоугольник почтового индекса цветом, который отражает процент людей в этом почтовом индексе, которые являются кавказскими. Как я могу сделать это в Elasti c Поиск? Обратите внимание, что мне не нужно или не нужно возвращать какие-либо другие данные, хранящиеся в документах, кроме количества документов в каждом сегменте почтового индекса, которые являются кавказскими, и общего количества документов в каждом сегменте почтового индекса. Клиент отобразит суммы и среднее значение.
Может быть, необходимо создать вложенную агрегацию из 1 сегмента в каждой родительской агрегации почтового индекса? Это вложенное ведро будет содержать количество всех людей (т.е. документов), которые живут в этом почтовом индексе и являются кавказскими. Вложенная агрегация выглядит излишней, учитывая, что мне нужны только данные.
Или я могу запустить агрегирование по почтовому индексу и вложенную агрегацию по этнической принадлежности, которая включает в себя только документы с этнической принадлежностью «кавказский». Это работает, но опять же может быть излишним. Мой запрос эластичного поиска выглядит следующим образом ...
`{
"aggs": {
"zips": {
"terms": {
"field": "home_zip.keyword",
"size": 10000
},
"aggs": {
"ethnicity": {
"terms": {
"field": "ethnicity.keyword",
"include": "caucasian"
}
}
}
}
}
}`
Ответ включает в себя общее количество документов в каждом сегменте почтового индекса, а также общее количество документов в каждой этнической подгруппе. Это две части данных, которые нам нужны. Существует ли более простой или более быстрый запрос?
Другая идея состоит в том, чтобы запустить агрегированное суммирование по сценарию, которое присваивает значение 1 каждому документу, содержащему этническую принадлежность «кавказец», и значение 0 каждому документу, который не содержит этническая принадлежность "кавказская. Как будет выглядеть этот код запроса?