#java #spring #elasticsearch #spring-data #spring-data-elasticsearch
#java #spring #elasticsearch #spring-данные #spring-data-elasticsearch
Вопрос:
Использование spring boot 2.3.4.
Есть ли способ использовать пользовательский объект GeoPoint вместо org.springframework.data.elasticsearch.core.geo.GeoPoint ?
Если да, то как можно переопределить отображение? putMapping устарел.
@Document(indexName="myIndex")
public class MyDocument{
@GeoPointField
private MyPositionDocument position;
// currently this only works with
// private GeoPoint position;
Ответ №1:
У вас уже есть первая часть, с аннотацией свойства @GeoPointField
. Это гарантирует, что правильные сопоставления индексов будут записаны так, чтобы тип position
был geo_point
.
Следующее, что вам нужно будет создать пользовательские конвертеры для преобразования из a MyPositionDocument
в тип, который поддерживается Elasticsearch (https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html#geo-point ) и один преобразователь для другого направления.
Что касается регистрации пользовательских конвертеров, см. https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.mapping.meta-model.conversions