我正在使用spring-data-elasticsearch(5)自动将第三方数据写入ES(8)索引,这些数据包含GML格式的地理数据,这些数据被解析为嵌套的Map<String, Object>
。
我的POJO中有一个字段
@GeoShapeField
private Map<String, Object> geometry;
在许多情况下,这一点写得非常好;然而,我得到的数据也可以包含Envelope
,GeoJson不支持该数据,但可以将其导入ES而不会出现问题。
我可以编写简单的自定义ReadingConverter
/WritingConverter
-但是如何注册它们,以便@GeoShapeField
在适当的时候自动选择它们?
我看到org.springframework.data.elasticsearch.core.convert.GeoConverters
负责选择正确的转换器,特别是.GeoJsonToMapConverter
和.MapToGeoJsonConverter
。我如何正确地扩展/替换类,以便@GeoShapeField查找额外(或更多)类型?
1条答案
按热度按时间am46iovg1#
P. J. Meisch在评论中指出,我有几个理解问题,导致了这个问题的提出。
我真正的问题的答案很简单:对于信封,ElasticSearch预期
要使用spring-data-elasticsearch实现这一点,只需提供到
Map<String, Object>
的简单转换:我绊倒的点是数据。我收到指定左下角和右上角的边界框。然而,ES期望边界框为左上角和右下角。在切换各自的位置后,现在一切正常。