我们正在尝试使用以下无痛脚本来重新索引elasticsearch中的数据。
POST _reindex
{
"source": {
"index": "metricbeat-*"
},
"dest": {
"index": "metricbeat"
},
"script": {
"lang": "painless",
"inline": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
}
}
此脚本完美无缺,并创建了所有索引的另一个副本。 exa:如果我有原始索引为 metricbeat,2016年5月30日 运行此脚本后,它创建metricbeat-2016.05.30-1,它是原始索引的精确副本,即(metricbeat-2016.05.30)
现在我想做两件事:
1]删除原始索引,即metricbeat-2016.05.30
2]将重新索引的索引或原始索引的副本(即metricbeat-2016.05.30-1)重命名为metricbe5-2016.05.30,即原始索引。
我们怎么做? 我们可以修改上面的无痛脚本吗?
提前致谢!
答案 0 :(得分:1)
我这样做的方式是像从Elasticsearch参考中的示例中那样重新索引,但是我没有在索引前附加“ temp-”:
POST _reindex
{
"source": {
"index": "metricbeat-*"
},
"dest": {
"index": "metricbeat"
},
"script": {
"lang": "painless",
"source": "ctx._index = 'temp-' + ctx._index"
}
}
这使使用“ metricbeat- *”模式删除原始索引更加容易:
DELETE metricbeat-*
然后我再次重新索引以获取原始名称:
POST _reindex
{
"source": {
"index": "temp-metricbeat-*"
},
"dest": {
"index": "metricbeat"
},
"script": {
"lang": "painless",
"source": "ctx._index = ctx._index.substring(5)"
}
}
请注意,Elasticsearch参考中的示例不必要地复杂:
ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'
使用以下代码可获得相同的结果:
ctx._index = ctx._index + '-1'
答案 1 :(得分:0)
您无法重命名索引。但是,删除原始索引后,可以使用aliases。