1
我有一個用例,其中我有2種類型的位置條件的查詢(即,具有geo_point型):爲地理位置查找
- 位置1:具有緯度/經度與說半徑= 90英里(它將會發生變化)和類型=傳出
- 位置2:具有緯度/經度,沒有半徑和類型=傳入現在
,當查詢與進來:緯度/經度和半徑= 20,我期望這發生:
- 簡單的地理位置查詢:如果輸入緯度/經度位於位置2的20miles內,則返回位置2.
- 如果輸入緯度/經度位於位置1的90英里內,則返回位置1。如果您注意到,我希望輸入半徑被特定類型位置的保存半徑覆蓋。
這是我想出了利用腳本:
{
"query": {
"match_all": {}
},
"filter": {
"script": {
"script": "!doc['geopoint'].empty && doc['coverage_type'].value == 'outgoing' ? doc['geopoint'].distanceInMiles(37,-121) <= doc['radius'].value : doc['geopoint'].distanceInMiles(37,-121) <= 20"
}
}
}
其中「37,-121」是經/緯度和20的輸入是輸入半徑。
您對查詢有什麼看法,這是做這件事的最好方法嗎?
最初發布this on ES mailing list,沒有運氣。