将GeoShape/Polygon文档与ElasticSearch中的GeoPoint查询进行匹配

DJP*_*DJP 5 geocoding geojson elasticsearch

我想匹配ES索引中任何一个点在文档多边形geo_shape类型内的文档.

所以基本上,我想查询一个点(即[2.934211,42.522377]),并获得与多边形与该点相交的所有文档的匹配.

这是我简单的ES映射:

{"geometry":{"type":"geo_shape","tree":"quadtree","precision":"1m"}}
Run Code Online (Sandbox Code Playgroud)

这里有一个索引文档:

{
"geometry": {
"type": "polygon",
"coordinates": [
    [
        [
            2.9109533049198
            ,
            42.525105483878
        ]
        ,
        [
            2.9110769445829
            ,
            42.531703894436
        ]
        ,
        [
            2.9032846986744
            ,
            42.539733810015
        ]
        ,
        [
            2.9030996511561
            ,
            42.556013979376
        ]
        ,
        [
            2.9131331966995
            ,
            42.562962734203
        ]
        ,
        [
            2.9135244444206
            ,
            42.569759384018
        ]
        ,
        [
            2.917877044124
            ,
            42.57088655519
        ]
        ,
        [
            2.9319395143989
            ,
            42.568900684816
        ]
        ,
        [
            2.9403405122874
            ,
            42.572016209123
        ]
        ,
        [
            2.9363870185385
            ,
            42.561333977005
        ]
        ,
        [
            2.9309712722105
            ,
            42.534037916636
        ]
        ,
        [
            2.9109533049198
            ,
            42.525105483878
        ]
    ]
]
}
Run Code Online (Sandbox Code Playgroud)

当我在我的索引中搜索并使用geo_shape过滤器输入时:

{
  "query": {
    "match_all": {}
  },
  "filter": {
    "geo_shape": {
      "geometry": {
    "relation": "intersects",
    "shape": {
      "coordinates": [
        2.934211,
        42.522377
      ],
      "type": "point"
    }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我没有结果:

{

    "took": 3,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 0,
    "max_score": null,
    "hits": [ ]
    }

}
Run Code Online (Sandbox Code Playgroud)

对我缺少什么有任何想法?我试图在"内部"关系中没有任何成功.

谢谢,DJP

小智 6

你的观点不在你的多边形里面!

谷歌地图