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

时间:2017-04-25 23:58:58

标签: elasticsearch

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

1 个答案:

答案 0 :(得分:2)

您可以使用update by query 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": {}
  }
}