Мы переходим на ES и должны поддерживать разные гео-запросы.Мы используем тип поля geo_point в нашем отображении.Я вижу, что ES поддерживает geo_bounding_box & geo_distance, но я пытаюсь выяснить, могут ли они использоваться для наших случаев использования ниже:
1.BBOX: где поле определяется с использованием центральной точки и радиуса.Насколько я понимаю, geo_distance создаст круглую форму, как мы можем использовать bbox этого круга?
//something like this - but we want a box shape not circle
QueryBuilders.geoDistanceQuery("location")
.point(lat, lon)
.distance(r, DistanceUnit.KILOMETERS);
2.LAT_WITHIN: как мы можем проверять документы с широтой, которая находится на расстоянии(север и юг) от центральной широты?
//something like this - but with only lat & radius
QueryBuilders.geoDistanceQuery(pointField)
.point(lat) //only lat?
.distance(r, DistanceUnit.KILOMETERS);
3.LON_WITHIN: аналогично вышеуказанной точке, но для долготы.
4. ТОЧКА ИСПОЛЬЗОВАНИЯ: найти документы с той же широтойЛон.Итак, можем ли мы использовать здесь поле географической точки в запросе термина или можно использовать лат / лон ключи?
//point equal - this gives error
QueryBuilders.termQuery("location", "lat,lon");
//OR - this doesn't return
QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("location.lat", lat))
.must(QueryBuilders.termQuery("location.lon", lon));
использование первого запроса дает ошибку «Поля гео не поддерживают точный поиск, используйтевместо этого выделенные гео-запросы: [местоположение] ".Второй запрос не возвращает результатов.
Спасибо