读取geo_shape作为GeoJSON文本

时间:2019-07-18 12:49:04

标签: elasticsearch nest elasticsearch-geo-shape

我目前通过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。

1 个答案:

答案 0 :(得分:0)

  

据我所知,geo_shape字段已经作为GeoJSON字符串存储在elasticsearch JSON文档中,因此在我看来,从JSON文档中读取geo_shape,反序列化为MultiPolygonGeoShape然后进行后处理会浪费资源从一开始就已经存在GeoJSON。

它没有作为GeoJSON string 存储在_source中;这是一个具有"type""coordinates"等属性的GeoJSON对象。

要反序列化为一个类型,这取决于您要对数据做什么,是否会浪费资源。如果您只打算再次序列化回GeoJSON,则进行反序列化/序列化往返过程可能会很麻烦。在这种情况下,您最好使用通过client.LowLevel属性在NEST上公开的低级客户端,以完整的响应作为stringbyte数组返回,并仅反序列化/解析您感兴趣的属性。