在我们的应用程序中,ES 保存具有区域字段的对象,其中areas
字段类型为 MultiPyligon。(基本上,它是一个多边形数组)。
现在,我们需要搜索其中一个多边形至少部分落在给定多边形内的所有对象(在我们的例子中,它是地图的当前视口)。
我们正在试验的当前查询如下:
$params = [
'index' => self::CrimeIndex,
'body' => [
'size' => 10000,
'query' => [
'bool' => [
'filter' => [
'geo_bounding_box' => [
'areas' => [
"top_left" => [
"lat" => $neLat,
"lon" => $neLng
],
"bottom_right" => [
"lat" => $swLat,
"lon" => $swLng
]
],
]
]
]
]
],
];
问题是这个查询获取了所有接触边界框边缘的多边形。(见图)。我们如何才能获得至少部分位于边界框内的所有多边形?