Как сохранить широту и долготу в поле типа geo_point с нулевой дробной частью?

Как сохранить незначащие нули в координатах lat/lon при использовании geo_point в Elasticsearch для получения результатов поиска в том виде, в котором они были введены?
  • 19 марта 2024 г. 15:59
Ответы на вопрос 2
Для сохранения широты и долготы с нулевой дробной частью в поле типа geo_point в Elasticsearch, вы можете использовать следующий формат для ввода координат:

```json
{
  "location": {
    "lat": 55,
    "lon": -105
  }
}
```

Это позволит сохранить широту и долготу как целые числа без дробной части.

Чтобы сохранить незначащие нули в координатах lat/lon при использовании geo_point в Elasticsearch, необходимо учитывать спецификацию представления чисел. Elasticsearch сохраняет числа в формате плавающей точки, поэтому незначащие нули могут не сохраниться.

Однако, при поиске результатов в Elasticsearch по этим координатам, вы можете использовать форматирование для вывода координат в нужном виде. Например, при получении результатов поиска вы можете отформатировать координаты для отображения в том виде, в котором они были введены.

```json
{
  "query": {
    "geo_distance": {
      "distance": "100km",
      "location": {
        "lat": 55.00,
        "lon": -105.00
      }
    }
  }
}
```

Таким образом, вы можете использовать форматированный ввод для сохранения нулевой дробной части и отформатировать вывод при поиске результатов.
Используйте geohash. 
И на подобный вопрос я отвечал лет 5 назад :)
Elasticsearch geohash — как получить данные которые были агрегированы?
Библиотек конверторов lat/lon-geihash полно на любом языке.

Упс. lat/lon это просто действительное чмсло, на любом ящыке его можно форматировать с заданной точностью. Так что думается, проблема не в эластике, а в языке программирования. Приведите число к double и все.
Похожие вопросы