【问题标题】:Reading geo_shape as GeoJSON text将 geo_shape 读取为 GeoJSON 文本
【发布时间】:2019-07-22 20:46:13
【问题描述】:

我目前通过 NEST 进行弹性搜索查询,该查询正在检索对象,例如

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

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

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

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

【问题讨论】:

    标签: elasticsearch nest elasticsearch-geo-shape


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,拉斯。是的,你没看错,我想将几​​何序列化回 GeoJSON。感谢您提供有关使用 client.LowLevel 属性的提示。上周我使用反序列化->再次序列化方法部署了一个解决方案,但是如果我检测到性能问题,我将尝试低级方法。谢谢。
    猜你喜欢
    • 2019-02-17
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    相关资源
    最近更新 更多