Ниже запрос даст вам то, что вам нужно:
POST <your_index_name>/_search
{
"size":0,
"aggs":{
"myaggs":{
"terms":{
"script":"def x = String.valueOf(doc['location'].lat).concat(',')+ String.valueOf(doc['location'].lon); return x;"
}
}
}
}
Хотя у меня есть вышеуказанный запрос, я бы посоветовал вам переосмыслить ваше требование, поскольку агрегирование географических точек обычно имеет смысл только , когда вы агрегируете с использованием диапазон от конкретного geo_point
, например, search gas stations which are near 100 miles around a house you have Amsterdam
.
Затем вы можете использовать агрегаты, специально созданные для обработки типа данных geo_point
. Я лично чувствую, что заданный мною вопрос, хотя и работает правильно, не имеет никакого смысла, или я сомневаюсь, что он мне поможет (хотя я надеюсь, что он помогает, и я оказался неправ).
Пожалуйста, перейдите по ссылкам ниже, чтобы создать агрегаты для правильных вариантов использования или, по крайней мере, заставить вас переосмыслить свой текущий вариант использования.
Агрегация географических расстояний и Географическая агрегация хеш-сетки
Надеюсь, это поможет!