【问题标题】:How to use elasticsearch geo query to get documents with distance greater than x kilometres如何使用elasticsearch地理查询获取距离大于x公里的文档
【发布时间】:2019-04-30 11:47:51
【问题描述】:

嘿,我正在开发一个应用程序,我需要根据距离过滤器显示提供的纬度经度的地点。我正在提供来自弹性搜索的数据。我可以使用 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 距离的数据? 我可以将过滤器与 must_not 结合使用吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您只需将filter 替换为must_not 即可满足您的需求:

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

    【讨论】:

    • 感谢解决我认为geoDistance只能与过滤器查询一起使用,也消除了这个疑问
    • must_not 也是一个过滤器,而是一个否定过滤器。很高兴它有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多