Как агрегировать по гео, используяasticsearch_dsl? - PullRequest
0 голосов
/ 30 октября 2018

Если у меня есть местоположения клиентов, сохраненные как тип данных geo_point (широта / долгота), и мне нужно определить doc_count, сгруппированный по местоположению geo_point, что такое синтаксисasticsearch_dsl?

1 Ответ

0 голосов
/ 30 октября 2018

Ниже запрос даст вам то, что вам нужно:

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. Я лично чувствую, что заданный мною вопрос, хотя и работает правильно, не имеет никакого смысла, или я сомневаюсь, что он мне поможет (хотя я надеюсь, что он помогает, и я оказался неправ).

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

Агрегация географических расстояний и Географическая агрегация хеш-сетки

Надеюсь, это поможет!

...