# Alias vs \*

**URL:** <https://discuss.elastic.co/t/alias-vs/50070>\
**Category:** Вопросы на русском языке\
**Created:** [May 15, 2016, 9:16am UTC](https://discuss.elastic.co/t/alias-vs/50070 "2016-05-15T09:16:40Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![intech](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/intech/32/9635_2.png) [@intech](https://discuss.elastic.co/u/intech)\
**Post date:** [May 15, 2016, 9:16am UTC](https://discuss.elastic.co/t/alias-vs/50070/1 "2016-05-15T09:16:40Z")

</div>

Например, для динамического маппинга с датами, возьмём дефолтный logstash-\*, где \* - это дата.  
Вот у нас их много, как лучше организовывать работу с ними загнать их все в alias, кстати, там ведь тоже можно использовать \* для ссылки на индекс или всё же лучше использовать \* прямо в запросе? Как устроены alias изнутри, влияет ли на производительность его использование и на сколько сильно? Или может alias представляет из себя дополнительный индекс и наоборот ускоряет работу?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [May 16, 2016, 3:13pm UTC](https://discuss.elastic.co/t/alias-vs/50070/2 "2016-05-16T15:13:49Z")

</div>

На примитивном уровне алиасы это просто HashMap в памяти, в которой для каждого алиаса задан список индексов, в который этот алиас должен раскрываться перед выполнением запроса. Так что используйте то, что проще с точки зрения архитектуры вашего приложения. На скорость работы это никакого влияния не окажет (за исключением случая, если у вас сотни тысяч этих алиасов и вы их создаете и уничтожаете каждую секунду, тогда на старых версиях elasticsearch могут быть проблемы).

---

<div class="post-metadata">

**Author:** ![intech](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/intech/32/9635_2.png) [@intech](https://discuss.elastic.co/u/intech)\
**Post date:** [May 16, 2016, 4:14pm UTC](https://discuss.elastic.co/t/alias-vs/50070/3 "2016-05-16T16:14:52Z")

</div>

@Igor_Motov, благодарю за ответ! А можно ещё узнать ваше мнение с организацией структуры.  
Мне в голову пришёл вот такой паттерн, что когда нужно на продакшен новую версию выкатывать и требуется внести много изменений в маппинг, то приходится заниматься переиндексированием.  
А я хочу решить эту проблему через алиасы, то есть имеем названия индексов users, accounts, sessions и т.п., теперь это названия в алиасах ссылками на индексы users\_\*, где users\_v1, users\_v2, ...  
Каждый индекс имеют свою версию маппинга и свои данные.

Не возникнет ли сложностей с использованием таких алиасов? Учитывая, что маппинг в индексах отличается.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [May 16, 2016, 4:45pm UTC](https://discuss.elastic.co/t/alias-vs/50070/4 "2016-05-16T16:45:09Z")

</div>

> [@intech](#):
>
> А я хочу решить эту проблему через алиасы, то есть имеем названия индексов users, accounts, sessions и т.п., теперь это названия в алиасах ссылками на индексы users\_\*, где users\_v1, users\_v2, ...Каждый индекс имеют свою версию маппинга и свои данные.

Я не очень понимаю, как это решает проблему переиндескирования. Обычно, потребность переиндексации возникает, когда необходимо выполнять новые запросы, который старый индекс не поддерживал. В вашем случае, вы оставляете старые данные в старом формате, то есть новый запрос с этими данными работать не будет.

---

<div class="post-metadata">

**Author:** ![intech](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/intech/32/9635_2.png) [@intech](https://discuss.elastic.co/u/intech)\
**Post date:** [May 16, 2016, 4:47pm UTC](https://discuss.elastic.co/t/alias-vs/50070/5 "2016-05-16T16:47:19Z")

</div>

Не будет использовать совсем или частично? А как поведёт себя эластик если будет в v1 тип поля один, а в v2 другой с одним и тем же именем?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [May 16, 2016, 4:54pm UTC](https://discuss.elastic.co/t/alias-vs/50070/6 "2016-05-16T16:54:12Z")

</div>

Зависит от запроса и типов полей в старой и новой схеме и версии elasticsearch. Elasticsearch будет пытаться интерпретировать запрос для каждого индекса отдельно и если такая запрос для каждого индекса будет иметь смысл - то такой запрос пройдет, если нет - то зависит от версии elasticsearch.

---

<div class="post-metadata">

**Author:** ![intech](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/intech/32/9635_2.png) [@intech](https://discuss.elastic.co/u/intech)\
**Post date:** [May 16, 2016, 5:00pm UTC](https://discuss.elastic.co/t/alias-vs/50070/7 "2016-05-16T17:00:14Z")

</div>

Тогда это как раз решает проблему переиндексации всех документов.  
Смотрите, я просто ввожу версионность для индексов, а за обновления данных уже отвечает клиентское приложение, при редактировании в случаи необходимости документ уже сохраняется под актуальный маппинг согласно клиентской модели данных.  
Но при этом мы имеем возможность работы с документами из старого маппинга - поиск, просмотр, редактирование. Причём опять же клиентское приложение поддерживает версию индексов, зная как их отобразить для просмотра и после редактирования сохранить по актуальной модели данных.  
Или я что-то не учёл при таком раскладе? 🙂

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [May 16, 2016, 5:03pm UTC](https://discuss.elastic.co/t/alias-vs/50070/8 "2016-05-16T17:03:46Z")

</div>

Все дело - в деталях.

---

<div class="post-metadata">

**Author:** ![intech](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/intech/32/9635_2.png) [@intech](https://discuss.elastic.co/u/intech)\
**Post date:** [May 16, 2016, 5:05pm UTC](https://discuss.elastic.co/t/alias-vs/50070/9 "2016-05-16T17:05:50Z")

</div>

Это верно!) Спасибо Игорь за консультацию! Такую структуру уже реализовали в новом проекте, посмотрим как это всё будет работать в продакшене)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:48pm UTC](https://discuss.elastic.co/t/alias-vs/50070/10 "2017-07-06T13:48:16Z")

</div>

Closed on July 6, 2017, 1:48pm UTC


