c# - 如何在Elastic Search中为带有GeoShape字符串GeoJson多边形的类型化对象编制索引?

标签 c# json elasticsearch geojson nest

我有一个类型化的类,其中包含代表多边形的GeoJson字符串变量。
如何使用NEST在Elastic Search中为其编制索引?
用以下方式标记字段:

[ElasticProperty(Type = FieldType.GeoShape)]
public string Polygon { get; set; }

并在CreateIndex中将其作为
 .GeoShape(s => s
    .Name(m => m.Polygon)
    .Tree(GeoTree.Geohash)
    .TreeLevels(2)
    .DistanceErrorPercentage(0.025))

给出此错误:

failed to parse [polygon]]; nested: ElasticsearchParseException[Shape must be an object consisting of type and coordinates"



由于我将GeJSon作为输入,而GeoShape的坐标则为Geo JSON,如何映射此数据?我可以反序列化输入并填充ES结构,但这似乎太复杂了,容易出错。

谢谢,

莫妮卡

最佳答案

我写了a blog post about working with Geospatial queries with Elasticsearch and NEST

处理要持久保存为geo_shape类型并在应用程序中轻松使用它们的字段的一种好方法是使用NetTopologySuite,它包含一个串行器,用于在其中转换IGeometry类型(例如Polygon,LineString,MultiPolygon)。代码导入GeoJSON,即geo_shape类型支持的格式。然后可以将序列化器注册到NEST客户端,以便正确处理IGeometry类型的模型属性。

I have an example of doing this up on BitBucket.

关于c# - 如何在Elastic Search中为带有GeoShape字符串GeoJson多边形的类型化对象编制索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831085/

相关文章:

mysql - Logstash 具有巨大的 mysql 结果集

docker - 当我尝试从容器运行时,我的自定义节拍找不到 custombeat.yml

c# - 在 C# 中对域事件进行排队

java - Json访问字段名 "*"到Java类

c# - 当 Controller 位于另一个项目中时,Get 方法不返回值

javascript - jQuery 解析后获取未定义的 JSON

javascript - 如何从 Express.js 发布到 api

elasticsearch - 扫描/滚动 Elasticsearch 索引时是否有可预测的顺序?

c# - Azure Function 找不到文档 openXML

c# - .NET 4.7.2 ASP.NET WebForms 网站中的依赖注入(inject) - 构造函数注入(inject)不起作用