将 geo_shape 读取为 GeoJSON 文本

Reading geo_shape as GeoJSON text

我目前有一个通过 NEST 检索对象的弹性搜索查询

    public class ElasticSearchObject
    {
        [PropertyName("code")]
        public string Code { get; set; }

        [PropertyName("geometria")]
        public MultiPolygonGeoShape Geometria { get; set; }
    }

查询现在正在运行,但我需要更改 "Geometria" 属性 的类型(映射到 elasticseach 存储文档中的 geo_shape 字段)。现在它必须是一个包含 GeoJSON 字符串的字符串。我可以 post 处理 MultiPolygonGeoShape 属性 并从其内容构建 GeoJSON 字符串,但我想知道...是否有更直接的方法?

据我所知,geo_shape 字段已经作为 GeoJSON 字符串存储在 elasticsearch JSON 文档中,所以在我看来这是一种资源浪费通过从 JSON 文档中读取 geo_shape,反序列化为 MultiPolygonGeoShape,然后 post 处理为 GeoJSON,此时 GeoJSON 从一开始就已经存在.

As far as I know the geo_shape field is already stored in the elasticsearch JSON document as a GeoJSON string, so it looks to me like a waste of resources going through reading the geo_shape fromt the JSON document, deserializing into MultiPolygonGeoShape and then postprocessing to GeoJSON, when the GeoJSON was already there from the beginning.

它没有作为 GeoJSON 字符串 存储在 _source 中;它是一个 GeoJSON 对象,具有 "type""coordinates" 等属性

反序列化为类型是否浪费资源取决于你想对数据做什么。如果您只想再次序列化回 GeoJSON,那么完成 deserialization/serialization 往返可能会产生开销。在这种情况下,您最好使用通过 client.LowLevel 属性 在 NEST 上公开的低级别客户端到 return 完整响应作为 stringbyte数组,deserialize/parse 只有您感兴趣的属性。