我想要按客户点计算在配送半径内的资源。我的地图如下:
"restaurantPoint" => [
"type" => "geo_point"
],
"deliveryRadius" => [
"type" => "float"
]以及以下样本数据:
`"restaurantPoint": "35.73701996471125,51.409086138010025",
"deliveryRadius": 1`所以,每一家餐厅都有一个点和一个配送半径,以公里为单位,另一方面,我们知道用户点。在查询中,我想得到可以将食物送到用户位置的餐馆。我必须检查餐厅点与用户点之间的距离是否小于餐厅配送半径。
例如,如果用户与餐厅之间的距离为1公里,餐厅的配送半径为2公里,则可以选择。
弹性搜索文档不完整,无法找到解决方案。
发布于 2018-06-27 09:43:36
最后,我使用了脚本:
GET development-restaurants/restaurants/_search
{
"query": {
"bool" : {
"must" : {
"script" : {
"script" : {
"source": "doc['restaurantPoint'].arcDistance(35.73702, 51.40909) <= doc['deliveryRadius'].value",
"lang": "painless"
}
}
}
}
}
}https://stackoverflow.com/questions/51039461
复制相似问题