2017-04-25 37 views
0

嗯,我有一个索引,其中包含具有作为双精度数组的地址的文档。但事实证明,经度和纬度的顺序是错误的,即代替[lon, lat]这些阵列就像[lat, lon]。有没有办法在索引的所有文档上切换这些值,而无需再次重新创建它们?或者将地址的格式从一个数组改为一个字符串,所以他们的数据变成了"lat, lon"?到目前为止,我发现的解决方案是重新创建整个数据集,在这种情况下,这是非常耗时的实用。在elasticsearch索引中交换地点的坐标

回答

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": {} 
    } 
} 
+0

谢谢:)由于某种原因,我试图做这样的事情,但它不工作;我试图更新位置提交有一个字符串,而不是数组交换值。但是,这一个完美工作 –

+0

真棒,很高兴它解决了。 – Val

相关问题