0

我正在尝试获取与圆圈相交的记录列表。

映射:我有一个 geo_point 和一个 geo_shape 但我指的是 geo_shape

{
   "mappings": {
      "poi": {
         "properties": {
            "id": {
               "type": "string",
               "index": "not_analyzed"
            },
            "type": {
               "type": "string",
               "index": "not_analyzed"
            },
            "name": {
               "type": "string",
               "analyzer": "whitespace"
            },
            "pin": {
               "type": "geo_point"
            },
            "geometry": {
               "type": "geo_shape",
               "tree": "quadtree",
               "precision": "1m"
            },
            "extras": {
               "type": "object"
            }
         }
      }
   }
}

一条记录(列表的第一个,不一定匹配)

{
   "id": 416824728,
   "pin": [
      11.2418666,
      46.4718564
   ],
   "geometry": {
      "type": "Point",
      "coordinates": [
         11.2418666,
         46.4718564
      ]
   },
   "extras": {
      "capacity": "5",
      "amenity": "parking",
      "fee": "no"
   },
   "name": "",
   "type": "poi"
}

查询:

{
   "query": {
      "filtered": {
         "query": {
            "match_all": {}
         },
         "filter": {
            "geo_shape": {
               "geometry": {
                  "shape": {
                     "type": "circle",
                     "radius": "100km",
                     "coordinates": [
                        11,
                        46
                     ]
                  }
               }
            }
         }
      }
   }
}

有什么建议吗?

谢谢

4

1 回答 1

0

我正在并行使用 node.js 批量 api 实现以及不可搜索的记录。

利用 Promise,我已经连续使用了批量 api,但只有 Point 类型可以搜索。

切换到一个一个插入记录后,所有记录(包括多边形和线串)都被正确索引(?),因此可以搜索。

于 2015-11-06T09:21:43.403 回答