Elasticsearch предоставляет механизм для создания псевдонимов (aliases) для index. Суть в том, что вы задаёте псевдоним (alias) для index и уже в запросах для доступа к этому index используете именно его alias, а не имя index.

Рассмотрим одну из самых частых применений псевдонимов. Допустим у вас есть index, название которого постоянно меняется, например, вы добавляете к названию версию вашего приложения my-index-v1. И соответственно при каждом новом релизе имя вашего index меняется. И вам либо вашему приложению, которое обращается к этому index постоянно надо менять имя index при запросе. Естественно это глупая задача и для её решения используется как раз-таки псевдонимы (aliases).

При использовании псевдонимов (aliases) при создании нового index вы назначаете ему тот же alias что и был у старого index и удаляете этот alias у старого index. Соответственно ваше приложение всё также обращается к старому alias и получает данные с нового index.

Вы также можете назначать один и тот же alias множествам index если этого требует ситуация.

without alias

В такой реализации для того чтобы обратиться к новому index вам надо менять запрос.

GET my-index-v2/_search

with alias

В такой реализации вам нужно добавить alias к новому index (my-index-v2) и удалить у старого index (my-index-v1). Соответственно в самом запросе всё остаётся также, как и было.

GET my-index-alias/_search

Создание alias

Для того, чтобы создать alias или удалить его используется _aliases.

Пример создания:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "my-index-v1",
        "alias": "my-index-alias"
      }
    }
  ]
}

Пример создания и удаления:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "my-index-v2",
        "alias": "my-index-alias"
      }
    },
    {
      "remove": {
        "index": "my-index-v1",
        "alias": "my-index-alias"
      }
    }
  ]
}