如何更新Neo4j地理空间索引?

时间:2015-06-30 00:09:30

标签: neo4j geospatial spatial neo4j-spatial

很简单,这个问题或答案在我看过的任何地方都不存在。

目标是重新索引节点以更新其纬度和经度属性。

我用来在neo4j中完成地理空间操作的插件称为Spatial


这是我的设置

我创建了一个指针:

POST http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer

{
  "layer" : "geom",
  "lat" : "geolocation.lat",
  "lon" : "geolocation.lon"
}


然后我创建了一个geom空间索引:

POST http://localhost:7474/db/data/index/node/

{
  "name": "geom",
  "config": {
    "provider": "spatial",
    "geometry_type": "point",
    "lat": "geolocation.lat",
    "lon": "geolocation.lon"
  }
}


我最后将节点添加到索引中:

POST http://localhost:7474/db/data/index/node/geom

{  
  "value": "dummy",
  "key": "dummy",
  "uri": "http://localhost:7474/db/data/node/5734"
}


我有一个关于如何完成重建索引的理论。首先,我将从地理空间索引中删除该节点,然后重新添加它。但是我担心这可能会搞砸了。我在其他地方读过删除索引然后添加它们会产生问题。

重新建立节点索引的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

看起来你可以再次在索引上调用POST。我不知道这有什么影响。我也不知道它是否创建了一个新的索引/节点。它似乎从我的有限测试中正确更新。

示例:

POST http://localhost:7474/db/data/index/node/geom

{  
  "value": "dummy",
  "key": "dummy",
  "uri": "http://localhost:7474/db/data/node/5734"
}


您可以通过运行以下Cypher查询来验证索引节点是否未重复。

MATCH (node { id: 5734 }) 
RETURN node


重要提示:上述id不得与地理空间节点本身的实际ID混淆。它是用于引用您编制索引的节点的属性。