Point落入ElasticSearch中的一个圆圈

时间:2015-01-09 09:15:00

标签: c# .net elasticsearch nest

我遇到一些问题,即弹力搜索在圆圈内找到一个点。 示例:假设我有50条弹性记录。我为这些

索引并创建了每个映射的映射
  .GeoShape(g => g.Name(n => n.BoundingCircle)
                       .Tree(GeoTree.Quadtree)
                       .TreeLevels(50)
                       .DistanceErrorPercentage(0.025)
                    )

BoundingCircle是CircleGeoShape。现在,对于每个记录,我有lat,long和radius,因此很容易构建Circle形状。 现在我的问题是在搜索中给出一个点我找不到该点是否在50个圆形中的一个中。 我试过这样:

  var result3 = EsClient.Search<Radius>(s => s
            .Filter(f => f
                .GeoShapePoint(
                "boundingCircle",
                 c => c.Coordinates(coord).Relation(GeoShapeRelation.Intersects)
            )
        )
        .Take(50)
        .Sort(sort => sort.OnField("_score").Descending())
        );

但似乎将一个点用弹性搜索成圆形不起作用。 有人设法做到了吗?

更新: 我确实设法找到了EnvelopeGeoShape的一个点,但我想使用CircleGeoShape

更新: 我使用PolygonGeoShape来创建每条记录的形状,因为EnvelopeGeoShape不能提供最佳覆盖率。我创建了一个十边形,对于小半径,覆盖范围几乎和圆一样好。这个丑陋的部分是创建十边形坐标。 我回到我的问题的任何方式。有没有人设法在弹性搜索中找到CircleGeoShape的一个点?

由于

0 个答案:

没有答案