elasticsearch reindex不使用脚本中指定的索引名



我尝试从远程集群重新索引每日索引,并遵循驯鹿每日索引示例

POST _reindex
{
"source": {
"remote": {
"host": "http://remote_es:9200"
}, 
"index": "telemetry-*"
},
"dest": {
"index": "dummy"
},
"script": {
"lang": "painless", 
"source": """
ctx._index = 'telemetry-' + (ctx._index.substring('telemetry-'.length(), ctx._index.length()));
"""
}
}

看起来,如果新的ctx._index与原来的ctx._index完全相同,它将使用dest.index代替。它将所有记录重新索引为"dummy"。指数

  1. 这是一个错误还是预期的行为?我找不到任何解释这种行为。
  2. 是否有一种方法可以从远程重新索引(多个索引),并且仍然保留原始名称?

这是因为根据您的逻辑,目标索引名称与源索引名称相同。在您所链接的文档中,他们在索引名称的末尾附加了'-1'

在您的示例中,下面的逻辑只是将目标索引名称设置为源索引名称,而reindex不允许这样做,因此它使用dest.index

中指定的目标索引名称。
ctx._index = 'telemetry-' + (ctx._index.substring('telemetry-'.length(), ctx._index.length()));

同样值得注意的是,这种情况在这里和这里都有报道。

最新更新