在Elasticsearch索引中交换地理点的坐标



好吧,我有一个索引,上面有文档,其中具有地理位置作为双打数组。但是事实证明,经度和纬度的顺序错误,即,阵列就像 [lat, lon]一样,而不是 [lon, lat]。有什么方法可以在索引的所有文档上切换这些值,而无需重新重新创建它们?或将地理点的格式从数组更改为字符串,因此它们的数据变成"lat, lon"?到目前为止,我发现的解决方案是再次重新创建整个数据集,在这种情况下,这非常耗时。

您可以使用查询API的更新来更新所有文档并交换坐标,例如:

POST your_index/_update_by_query
{
  "script": {
    "inline": "ctx._source.location = [ctx._source.location[1], ctx._source.location[0]]",
    "lang": "painless"
  },
  "query": {
    "match_all": {}
  }
}

最新更新