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,没有运气。