Обновление конфигурации для активно используемого индекса без потери данных - PullRequest
0 голосов
/ 18 октября 2019

Иногда мне нужно обновить сопоставления, настройки или привязать конвейеры по умолчанию к активно используемому индексу.

В настоящее время я использую метод с потерей данных следующим образом:

  1. обновить шаблон индекса соответствующим отображением (или связать конвейер по умолчанию с помощью index.default_pipeline);
  2. создать a_new_index (соответствует template index_patterns);
  3. переиндексация index_to_fix в a_new_index для переноса уже проиндексированных данных;
  4. использование псевдоним , чтобы перенаправить поступающий запрос на индексирование на a_new_index (псевдоним будет иметь то же имя, что и index_to_fix, чтобы обеспечить бесперебойную индексацию), и удалить index_to_fix;

Но между этапами3 и шаг 4, существует промежуток времени, в течение которого вновь проиндексированные данные теряются в исходном index_to_fix.


. Есть ли способ обновить конфигурации для активно используемого индекса без каких-либо данных? потеря

1 Ответ

0 голосов
/ 20 октября 2019

Спасибо за помощь @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"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...