【发布时间】:2022-08-04 00:55:42
【问题描述】:
我正在尝试使用杰克逊反序列化弹性搜索的响应。 在我添加几何图形之前,一切正常。
我正在使用geolatte-geojson 来处理几何图形。
但由于某种原因,elasticsearch 响应的反序列化并不顺利,可能是 WKT 格式的原因。
我为 geolatteModule 创建了一个用于反序列化的 bean:
@Bean
public GeolatteGeomModule geomModule() {
return new GeolatteGeomModule();
}
下面是 elasticsearch 的几何响应的样子:
POLYGON((-95.26605606079102 29.724060758766743,-95.26631355285645 29.70900307937485,-95.23798942565917 29.702218931464575,-95.22185325622557 29.704306410402122,-95.2236557006836 29.72592417587012,-95.25712966918945 29.727638489043596,-95.26605606079102 29.724060758766743))
这是我试图反序列化elasticsearch对POJO的响应的方式:
Document document = objectMapper.convertValue(hit.getSourceAsMap(), Document.class);
一些可能有用的附加点:
我也将几何对象发送到 DTO,当它作为 WKT 发送时,我遇到了同样的错误。但是当以 geojson 格式发送它时它工作正常。
我遇到的错误:
java.lang.IllegalArgumentException: (was java.lang.NullPointerException) (through reference chain: com.kayrros.searchmanager.model.entity.Document[\"geometry\"])
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4393)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4324)
-
它似乎不受支持:github.com/spring-projects/spring-data-elasticsearch/issues/…。一个自定义的 Jackson Deserializer 可能可以解决问题
-
@Val 实际上,我正在使用带有 geolatte-geojson 的 java 高级休息客户端。我用过调试器,发现需要是{type: POLYGON, coordinates: []}格式。有没有办法从 WKT 得到这个?
-
谢谢将尝试使用地理工具,只是想知道是否有任何方法可以从 geojson 格式而不是 WKT 的弹性搜索中获取数据
-
从 ES 中,您可以将任何索引到源文档中。如果你索引 WKT,你会得到 WKT,如果你索引 GeoJson,你会得到 GeoJson
标签: java spring-boot elasticsearch jackson geojson