Пользовательский объект геопункта в Spring Data Elasticsearch

#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