Как получить расстояние между двумя географическими точками в elasticsearch? - PullRequest
0 голосов
/ 14 июля 2020

Следующий запрос в elasticsearch даст результаты, расположенные в пределах указанного расстояния. Результат не включает фактическое расстояние. Есть ли способ получить эту информацию в elasticsearch?

"query": {
    "bool" : {
        "must" : {
            "match_all" : {}
        },
        "filter" : {
            "geo_distance" : {
                "distance" : "12km",
                "pin.location" : [-70, 40]
            }
        }
    }
}

1 Ответ

1 голос
/ 14 июля 2020

Используйте поле скрипта с той же контрольной точкой, что и в фильтре geo_distance. Полный запрос:

{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "5000km",
          "pin.location": [
            -70,
            40
          ]
        }
      }
    }
  },
  "script_fields": {
    "distance_in_m": {
      "script": "doc['pin.location'].arcDistance(40, -70)"
    }
  }
}

OR

geo-sort , и вы получите информацию о расстоянии, включенную в ответ на сортировку.

...