如何使用Elasticsearch地理查询获取距离大于x公里的文档

时间:2019-04-30 11:47:52

标签: elasticsearch

嘿,我正在开发一个应用程序,该应用程序需要基于距离过滤器根据所提供的经度显示位置。我正在通过弹性搜索提供数据。我可以使用geo_distance查询轻松地提供数据,以查找地理点在中心点指定距离内的文档。但是我无法搜索大于x公里的数据

弹性搜索版本-6.6

映射-

{
  "mappings": {
  "_doc": {
   "properties": {
     "location": {
       "type": "geo_point"
      }
    }
  }
 }
}

要获得少于x公里的地方,我会使用此查询

{
 "query": {
    "bool" : {
        "filter" : {
            "geo_distance" : {
                "distance" : "15km",
                "location" : {
                    "lat"  : 40.1111,
                    "lon"  : 40.1111 
                }
             }
         }
      }
   }
}

要使用什么查询来获取大于x km的结果,地理过滤器是否提供任何查询参数来获取大于x距离的数据? 我可以结合使用filter与must_not吗?

1 个答案:

答案 0 :(得分:2)

您只需将filter替换为must_not,即可实现所需的功能:

{
 "query": {
    "bool" : {
        "must_not" : {
            "geo_distance" : {
                "distance" : "15km",
                "location" : {
                    "lat"  : 40.1111,
                    "lon"  : 40.1111 
                }
             }
         }
      }
   }
}