# Перенос данных с 5.6.2 на 7.7.1 версию (reindex from a remote) и консистентность данных

**URL:** <https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477>\
**Category:** Вопросы на русском языке\
**Created:** [June 17, 2020, 1:28pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477 "2020-06-17T13:28:28Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [June 17, 2020, 1:28pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/1 "2020-06-17T13:28:28Z")

</div>

Добрый день!

Выполняю перенос данных из 5.6.2 на 7.7.1 версию (reindex from a remote) через `_reindex` api - как описано [тут](https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-remote.html)

Все прекрасно переносится - по большей части обошелся лишь удалением типа из маппинга.

Но есть такой вопрос: как нагнать данные, которые попали в исходный индекс во время его переноса? Ведь реиндекс может идти несколько часов, и в исходном индексе за это время может появится несколько тысяч новых документов. Посоветуйте, как это сделать по возможности максимально бесшовно? Возможно ли запустить реиндекс еще раз, чтобы он прогнал только те документы, которые появились в индексе после того как был проведен реиндекс? Есть ли еще какие-либо способы соблюсти консистентность данных в обоих кластерах?

---

<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 17, 2020, 1:58pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/2 "2020-06-17T13:58:19Z")

</div>

У вас время создания/обновления в документы добавляется?

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [June 17, 2020, 2:12pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/3 "2020-06-17T14:12:32Z")

</div>

Игорь, нет, индексы не time series, поле @timestamp и вообще что-то, напоминающее поле с временем в документе отсутствует.

---

<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 17, 2020, 4:05pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/4 "2020-06-17T16:05:12Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [June 17, 2020, 4:13pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/5 "2020-06-17T16:13:27Z")

</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:** [June 17, 2020, 4:17pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/6 "2020-06-17T16:17:49Z")

</div>

В идеале, было бы здорово пометить записи, которые были добавлены после начала реиндексации каким-нибудь образом (через pipeline или ваш код индексации) чтобы их можно было легко отфильтровать на входе при повторной реиндексации. В противном случае, надо с будет переиндексировать все с `"op_type": "create"` и `"conflicts": "proceed"`, чтобы процесс пыталься только создавать новые записи и игнорировать ошибки, если такие записи уже существуют.

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [June 17, 2020, 4:36pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/7 "2020-06-17T16:36:26Z")

</div>

То есть примерно нечто подобное:

```auto
POST _reindex?wait_for_completion=false
{
  "source": {
    "remote": {
      "host": "http://192.168.50.214:9200",
      "username": "elastic",
      "password": "changeme"
    },
    "index": "favorites_v2"
  },
  "dest": {
    "index": "favorites_v2",
    "op_type": "create",
    "conflicts": "proceed"
  }
}

```

У меня к сожалению ругается на "conflicts": "proceed"

---

<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 17, 2020, 5:39pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/8 "2020-06-17T17:39:59Z")

</div>

> [@Sergei\_Frolov](#):
>
> У меня к сожалению ругается на "conflicts": "proceed"

`conflicts` должен быть на том же уровне, что и `dest`, а не внутри. См. [документацию](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html#docs-reindex-api-request-body).

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [June 17, 2020, 7:34pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/9 "2020-06-17T19:34:30Z")

</div>

Спасибо за ответ!

Попробовал так:

```auto
POST _reindex?wait_for_completion=false
{
  "source": {
    "remote": {
      "host": "http://192.168.50.214:9200",
      "username": "elastic",
      "password": "changeme"
    },
    "index": "favorites_v2"
  },
  "dest": {
    "index": "favorites_v2",
    "op_type": "create"
  },
  "conflicts": "proceed"
}

```

К сожалению так вышло даже дольше чем залить данные с нуля ☹

---

<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 17, 2020, 8:04pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/10 "2020-06-17T20:04:43Z")

</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 15, 2020, 8:04pm UTC](https://discuss.elastic.co/t/5-6-2-7-7-1-reindex-from-a-remote/237477/11 "2020-07-15T20:04:45Z")

</div>

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