0

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

    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 是一种资源浪费,当 GeoJSON 从一开始就已经存在时。

4

1 回答 1

1

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

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

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

于 2019-07-22T12:46:13.357 回答