我目前通过NEST进行了Elasticsearch查询,该查询正在检索诸如
的对象 public class ElasticSearchObject
{
[PropertyName("code")]
public string Code { get; set; }
[PropertyName("geometria")]
public MultiPolygonGeoShape Geometria { get; set; }
}
该查询现在正在运行,但是我需要更改“ Geometria”属性的类型(该属性映射到elasticseach存储的文档中的geo_shape字段)。现在,它必须是一个包含GeoJSON字符串的字符串。我可以对MultiPolygonGeoShape属性进行后处理,并根据其内容构建GeoJSON字符串,但是我想知道...是否有更直接的方法?
据我所知,geo_shape字段已经作为GeoJSON字符串存储在elasticsearch JSON文档中,因此在我看来,从JSON文档中读取geo_shape,反序列化为MultiPolygonGeoShape然后进行后处理会浪费资源从一开始就已经存在GeoJSON。
答案 0 :(得分:0)
据我所知,geo_shape字段已经作为GeoJSON字符串存储在elasticsearch JSON文档中,因此在我看来,从JSON文档中读取geo_shape,反序列化为MultiPolygonGeoShape然后进行后处理会浪费资源从一开始就已经存在GeoJSON。
它没有作为GeoJSON string 存储在_source
中;这是一个具有"type"
,"coordinates"
等属性的GeoJSON对象。
要反序列化为一个类型,这取决于您要对数据做什么,是否会浪费资源。如果您只打算再次序列化回GeoJSON,则进行反序列化/序列化往返过程可能会很麻烦。在这种情况下,您最好使用通过client.LowLevel
属性在NEST上公开的低级客户端,以完整的响应作为string
或byte
数组返回,并仅反序列化/解析您感兴趣的属性。