# Много индексов или много документов в одном индексе?

**URL:** <https://discuss.elastic.co/t/topic/91321>\
**Category:** Вопросы на русском языке\
**Created:** [June 29, 2017, 5:20pm UTC](https://discuss.elastic.co/t/topic/91321 "2017-06-29T17:20:08Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![bio](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bio/32/76409_2.png) [@bio](https://discuss.elastic.co/u/bio)\
**Post date:** [June 29, 2017, 5:20pm UTC](https://discuss.elastic.co/t/topic/91321/1 "2017-06-29T17:20:08Z")

</div>

Добрый день.  
В свете отказа от типов, решил отделить каждый тип в отдельный индекс, но индексов получилось слишком много, около 10 000. Еластик стал притормаживать при создании индексов, каждый последующий создаётся все медленнее и медленнее.

Архитектура веб сервиса такова что, на каждого пользователя сейчас приходится по 7 индексов.  
У каждого пользователя индексы фактически одинаковые, в каждом хранятся данные конкретного пользователя.  
Сейчас стоит выбор, оставить как есть или создать 7 индексов, но в каждом из них будет большое число документов, около 1 млн.

Может я что-то не так делаю? Как оптимизировать большое количество индексов?

Ещё хотелось бы узнать, какое оптимальное количество индексов и документов в них?

---

<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:** [June 30, 2017, 4:45pm UTC](https://discuss.elastic.co/t/topic/91321/2 "2017-06-30T16:45:12Z")

</div>

А как у вас было? Один индекс на пользователя?

---

<div class="post-metadata">

**Author:** ![bio](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bio/32/76409_2.png) [@bio](https://discuss.elastic.co/u/bio)\
**Post date:** [June 30, 2017, 5:01pm UTC](https://discuss.elastic.co/t/topic/91321/3 "2017-06-30T17:01:30Z")

</div>

Да, один индекс на пользователя и 7 типов в нём. Сейчас 7 индексов на пользователя.

---

<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:** [June 30, 2017, 9:23pm UTC](https://discuss.elastic.co/t/topic/91321/4 "2017-06-30T21:23:33Z")

</div>

Я бы оставил один индекс на пользователя и свалил все в один тип. То есть, если сейчас документы такие:

тип `foo`:

```auto
{
   "common_field_1": "123",
   "specific_field_1": "...",
   "specific_field_2": "..."
}

```

тип `bar`:

```auto
{
   "common_field_1": "123",
   "specific_field_1": "...",
   "specific_field_2": "..."
}

```

то можно сделать так:

```auto
{
   "type": "foo",
   "common_field_1": "123",
   "foo_specific_field_1": "...",
   "foo_specific_field_2": "..."
}

```

```auto
{
  "type": "bar",
   "common_field_1": "123",
   "bar_specific_field_1": "...",
   "bar_specific_field_2": "..."
}

```

или

```auto
{
   "common_field_1": "123",
   "foo": {
      "specific_field_1": "...",
      "specific_field_2": "..."
   }
}

```

```auto
{
   "common_field_1": "123",
   "bar": {
      "specific_field_1": "...",
      "specific_field_2": "..."
   }
}

```

---

<div class="post-metadata">

**Author:** ![bio](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bio/32/76409_2.png) [@bio](https://discuss.elastic.co/u/bio)\
**Post date:** [July 1, 2017, 12:31pm UTC](https://discuss.elastic.co/t/topic/91321/5 "2017-07-01T12:31:06Z")

</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:** [July 2, 2017, 7:26pm UTC](https://discuss.elastic.co/t/topic/91321/6 "2017-07-02T19:26:58Z")

</div>

> Можете объяснить, почему бы вы выбрали этот вариант?

Слишком большое количество индексов не желательно с точки зрения производительности. Мешать данные разных пользователей в одном индексе тоже плохо, потому что данные одного пользователя могут "портить" поиск по релевантности для других пользователей, и может быть [использовано](https://www.ieee-security.org/TC/SP2017/papers/449.pdf) для слежки за данными других пользователей, другими словами, мешать данные разных пользователей я бы не рекомендовал (особенно, если вы в elasticsearch новичок). Из тех примеров, которые я привел выбирайте любой - это дело вашего вкуса. На уровне индекса, они все равно в практически одну и ту же структуру превратятся.

---

<div class="post-metadata">

**Author:** ![bio](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/bio/32/76409_2.png) [@bio](https://discuss.elastic.co/u/bio)\
**Post date:** [July 4, 2017, 6:03am UTC](https://discuss.elastic.co/t/topic/91321/7 "2017-07-04T06:03:39Z")

</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:** [August 1, 2017, 6:03am UTC](https://discuss.elastic.co/t/topic/91321/8 "2017-08-01T06:03:48Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
