Обновление elasticsearch в docker контейнере с версии 2.х до 6.x


(Uliana Andreeva) #1

Здравствуйте!
Я пытаюсь обновить elasticsearch с 2.4.4 до 6.2.2.
Согласно статье https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade.html,
Чтобы обновить кластер Elasticsearch с 2.x, есть два варианта:

  • full cluster restart до 5.6, реиндекс старых индексов, обновление до 6.x.
  • создание нового кластера версии 6.x и удаленный реиндекс, который импортирует индексы непосредственно из кластера 2.x.

Я начала со второго варианта - удаленного реиндекса: я подняла соседний контейнер с ES 6.2.2, создала все необходимые индексы со всеми настройками и маппингами из старых индексов, но когда я пытаюсь выполнить POST / _reindex, я получаю JSON, который говорит, что ничего не было обновлено или создано. При этом никаких ошибок нет. Соответственно, индексы в ES 6.2.2 по-прежнему пусты, то есть в новую версию ничего не переносится.

С первым способом тоже не все гладко. Общие шаги мне ясны, но есть вопросы:
Шаг "Shutdown all nodes": что это значит в случае с контейнерами? Мне нужно просто остановить контейнер с ES 2.4.4?
Шаг "Upgrade all nodes using RPM or Debian packages": как я могу сделать это в контейнерах? Развернуть рядом контейнер с новой версией ES или как?

Помогите, пожалуйста, разобраться, как обновить версию наиболее простым и правильным способом с учетом того, что все инстансы ES живут в Docker контейнерах?


(Igor Motov) #2

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

Можно на этот JSON взглянуть? Как вы запускаете эту команду?

Шаг "Upgrade all nodes using RPM or Debian packages": как я могу сделать это в контейнерах?

У вас директория data находиться внутри контейнера или снаружи?


(Uliana Andreeva) #3

У меня сейчас два контейнера: 2.4.4 на 9200 порту, 6.2.2 на 9260 порту. В конфиге 6.2.2 в вайтлист добавлен 127.0.0.1:9200. Запускаю так:

POST /_reindex
{
  "source": {
    "remote": {
      "host": "http://127.0.0.1:9200"
    },
    "index": "events",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "events"
  }
}

Исходный индекс events содержит некоторые документы. В 6.2.2 тоже есть индекс events, который создан руками с настройками и маппингами из старого индекса, но он пустой. Получаю ответ:

{
    "took": 15,
    "timed_out": false,
    "total": 0,
    "updated": 0,
    "created": 0,
    "deleted": 0,
    "batches": 0,
    "version_conflicts": 0,
    "noops": 0,
    "retries": {
        "bulk": 0,
        "search": 0
    },
    "throttled_millis": 0,
    "requests_per_second": -1,
    "throttled_until_millis": 0,
    "failures": []
}

В результате индекс events в 6.2.2 пустой, документов не содержит.

Только внутри контейнера.


(Igor Motov) #4

А вы искать по индексу events с запросом

    "query": {
      "match": {
        "test": "data"
      }
    }

не пробовали? Он сколько записей вам возвращает?


(system) #5

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