我的映射包含一个嵌套字段,如下所示:

"Locations": {
  "type": "nested",
  "properties": {
    "Name": {
      "type": "string"
    },
    "GeoPoint": {
      "type": "geo_point"
    }
  }
}

所以基本上我想做的是在文档的每个位置存储一些其他属性。

不幸的是,看起来这不适用于geo distance filter:
GET /myIndex/myType/_search
{
  "filter": {
    "geo_distance": {
      "distance": "100 mi",
      "Locations.GeoPoint": {
        lat: 40.70,
        lon: -74.00
      }
    }
  }
}

不会返回任何结果,而如果GeoPoint直接位于文档本身而不是嵌套字段上,则过滤器可以正常工作:
GET /myIndex/myType/_search
{
  "filter": {
    "geo_distance": {
      "distance": "100 mi",
      "GeoPoint": {
        lat: 40.70,
        lon: -74.00
      }
    }
  }
}

有什么方法可以使地理距离过滤器与嵌套字段上的geo_point一起使用?

最佳答案

nested filter完成以下任务:

GET /myIndex/myType/_search
{
  "filter" : {
    "nested" : {
      "path" : "Locations",
      "filter" : {
        "geo_distance": {
          "distance": "100 mi",
          "GeoPoint": {
            "lat": 40.70,
            "lon": -74.00
          }
        }
      }
    }
  }
}

关于elasticsearch - 在嵌套字段上应用地理距离过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24743101/

10-10 11:08