Спасибо за помощь @LeBigCat, после некоторых обсуждений. Я думаю, что эту проблему можно решить в три этапа.
Использовать псевдоним для CRUD
Прежде всего, попробуйте не использовать индекс напрямую, используйте псевдоним, если это возможно;поскольку вы не можете использовать псевдоним с тем же именем, что и существующие индексы, вы не можете напрямую заменить индекс, даже если он сломан (плохо спроектирован). Самый простой способ - использовать шаблон и включать имя индекса непосредственно в псевдоним.
PUT _template/test
{
...
"aliases" : {
"{index}-alias" : {}
}
}
Перенаправить индексирование
Поскольку index_to_fix
активно используется, после обновления шаблонаи создайте новый индекс a_new_fix
, мы можем использовать псевдоним для перенаправления индексации на a_new_fix
.
POST /_aliases
{
"actions" : [
{ "add": { "index": "a_new_index", "alias": "index_to_fix-alias" } },
{ "remove": { "index": "index_to_fix", "alias": "index_to_fix-alias" } }
]
}
Перенос данных
Просто используйте _reindex
чтобы перенести все данные с index_to_fix
на a_new_index
.
POST _reindex
{
"source": {
"index": "index_to_fix"
},
"dest": {
"index": "index_to_fix-alias"
}
}