0

有一个映射为:

"mappings": {
     "gyms": {
        "properties": {
           "location": {
              "type": "geo_point"
           },
           "name": {
              "type": "string"
           }
        }
     }
  }

我正在尝试检索距离给定纬度、经度 10 公里处的所有健身房。我正在使用这个查询:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": 10,
          "distance_unit": "km",
          "location": {
            "lat": 41.3819756,
            "lon": 2.17
          }
        }
      }
    }
  }
}

但是出了点问题,因为我在给定的纬度附近有一些健身房,并且弹性搜索响应没有文件。会发生什么?

更新 查询:

"query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "10km",
          "location": {
            "lat":   41.3819756,
            "lon": 2.17
          }
        }
      }
    }
  }

按预期工作!

作为应该出现的文档示例:

{
        "_index": "g4l",
        "_type": "gyms",
        "_score": 1,
        "_source": {
           "gymName": "sds",
           "location": {
              "lat": 41.3994375,
              "lon": 2.16152349999993
           }
        }
     },
     {
        "_index": "g4l",
        "_type": "gyms",
        "_score": 1,
        "_source": {
           "gymName": "sdf",
           "location": {
              "lat": 41.4040134,
              "lon": 2.201350400000024
           }
        }
     }
4

1 回答 1

0
  • 在过滤器部分从“位置”“gyms.location”的查询更改
  • 这应该适合你。
于 2016-04-21T13:25:30.063 回答