我遇到一些问题,即弹力搜索在圆圈内找到一个点。 示例:假设我有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的一个点?
由于