Миграция Elastic Search: обзор обновления размера версии ES 2.x–7.x

Elasticsearch
Миграция Elastic Search: обзор обновления размера версии ES 2.x–7.x

Давно пользуемся 2.2.2, и не обновлялись.Есть поговорка в официальном сообществе: "Чем хуже версия, тем сложнее обновиться".Сегодня стою на 2.2 .2 и все время смотрите 7.X Проверьте официальный сайт Описание: Какие основные корректировки были сделаны, заранее разберитесь с новыми функциями, сделайте миграцию более полной и будьте морально готовы к проблемам с обновлением.

Оглядываясь назад на ES

Во-первых, вернитесь назад и отследите изменения каждой версии от ES 2.2 до 7.X, сосредоточив внимание на полях, индексах и функциях, связанных с документами.

2.3

  • Небольшие доработки вложенных, заводных, API

Breaking changes in 2.3 | Elasticsearch Reference [2.3] | Elastic


2.4

  • Устаревший параметр запроса геолокации optim_bbox.
  • Настройка индексных шаблонов

Each index template must now be independently valid prior to merging. This means, for example, that you can no longer reference analyzers, filters, or tokenizers from a shared template.

Breaking changes in 2.4 | Elasticsearch Reference [2.4] | Elastic

5.0 Основные корректировки

  • Добавить плагин для переноса данных в 5.0, но требуется 2.3 или выше

поиск:

  • Параметр fields заменил store_fields
  • filtered , и , или используйте логическое предложение
  • отсутствует → существует лимит → terminate_after
  • запрос fquery устарел
  • query_binary filter_binary удалить

Отображение полей: (сосредоточиться)

  • stringполе заменяется наtextkeywordполе (но обратно совместимоеstring)
  • Текст предварительно сегментирован, ключевое слово не сегментировано. По умолчанию 256 символов.
  • Числовые поля и поля географического местоположения geo_point используют новую древовидную структуру BKD, которая занимает меньше места на диске и ускоряет запросы.
  • Все типы полей:"index": "not_analyzed"можно записать только как"index": "false"Наоборотtrue, если вы все еще не используете строку.
  • При динамическом отображении поля, содержащего числа с плавающей запятой, поле теперь по умолчанию используетfloatвместоdouble, причина в том, что в большинстве случаев числа с плавающей запятой должно быть более чем достаточно, но это значительно снизит требования к хранению.
  • Фильтр регулярных выраженийБольше не поддерживается и будет удален при обновлении.
  • Чтобы предотвратить взрыв карты, 5.x имеет максимум 1000 полей, максимальную глубину 20 и максимум 50 вложенных полей.
  • больше нельзя использовать_ttlили_timestampСоздание индекса включено, но миграция из версии 2.3+ будет продолжать работать.
  • 5.x не допускает пустых полей

Создайте индекс:

  • больше не поддерживается-или+Индекс в начале (конечно, я предполагаю, что он все еще не поддерживает верхний регистр)

Документация:

API:

Плагин:

  • Запретить плагины веб-сайтов, Kibana вместо этого или плагины расширения Chrome (что приведет к сбою наших самостоятельно разработанных плагинов, но проблема невелика)

Breaking changes in 5.0 | Elasticsearch Reference [5.0] | Elastic

5.1 5.2

  • Регулировка не большая, и толку от развития нет

Breaking changes in 5.1 | Elasticsearch Reference [5.1] | Elastic

Breaking changes in 5.2 | Elasticsearch Reference [5.2] | Elastic

5.3

  • Добавлен es.log (связанный с эксплуатацией и обслуживанием)
  • Значение bool является более строгим, за исключением того, что false, "false", "true" и "true" не допускаются. Отображение полей и поиск основаны на этом требовании.

Breaking changes in 5.3 | Elasticsearch Reference [5.3] | Elastic

5.4 5.5

  • Небольшие настройки для удаления по запросу
  • небольшая корректировка

Breaking changes in 5.4 | Elasticsearch Reference [5.6] | Elastic

Breaking changes in 5.5 | Elasticsearch Reference [5.6] | Elastic

5.6

  • Выпущен новый клиент JAVA, который может использовать те же классы Core Java для выполнения операций поиска, индексирования, удаления, обновления и массовых операций.TransportClient

Breaking changes in 5.6 | Elasticsearch Reference [5.6] | Elastic

6.0 Существенные корректировки

  • Для новой основной версии старые правила будут предоставлять план обновления для последовательных версий 5.x до 6.x, обновление одного узла за раз, как до, так и после версий, как правило, не поддерживает кросс-версию.
  • Индекс больше не поддерживает несколько типов (позже он будет полностью удален. Чиновники говорят, что под индексом слишком много разных сущностей, а распределение разреза разреженное и неравномерное, что серьезно мешает способности Lucene сжимать документы)
  • The first alternative is to have an index per document type. Instead of storing tweets and users in a single twitter index, you could store tweets in the tweets index and users in the user index. Indices are completely independent of each other and so there will be no conflict of field types between indices.

Официальная альтернатива:

1. Создайте индекс для каждого документа. Преимуществами этого являются плотное распределение, более подходящее для сжатия и большее соответствие спецификации Lucene. Недостатком является то, что индексы ES и сегментирование являются отношениями «один ко многим», возможно, из-за несколько небольших конфигурационных таблиц. , три-пять кусков данных, несколько шардов потрачены впустую. .

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

Документация:

  • Раньше bool мог быть: true, false, on, off, yes, no, 0, 1. Теперь можно использовать только true, false string или bool.

Спросите:

Множество корректировок запроса:woohoo.elastic.co/expensive/en/bad…

6.2

  • Добавлено встроенное ведение журнала GC, журнал 2G по умолчанию, 64M раундов один раз, что удобно для устранения проблем с ES.

Breaking changes in 6.2 | Elasticsearch Reference [6.8] | Elastic

6.3

  • Начиная с версии 6.3 все функции X-Pack поставляются с дистрибутивом Elasticsearch по умолчанию. (сертификат безопасности)

Breaking changes in 6.3 | Elasticsearch Reference [6.8] | Elastic

7.0 Значительные изменения

  • Настройки кластера: search.max_buckets максимум 10000 осколков.
  • _все удалено

Breaking changes in 7.1 | Elasticsearch Reference [7.1] | Elastic

С версии 7.0 до предварительного просмотра версии 7.8 серьезных структурных изменений не произошло.

Предварительный просмотр большой версии

V5.x

  • Lucene 6.x,
  • Улучшение производительности, механизм подсчета очков по умолчанию изменен с TF-IDF на BM 25.
  • Поддержка узла Ingest, предлагается завершение, клиент Java REST
  • Тип, помеченный как устаревший, поддерживает тип ключевого слова
  • оптимизация производительности
    • Пропускная способность индексирования была значительно улучшена за счет уменьшения внутренней конкуренции, предотвращения конкуренции за одновременные обновления одного и того же документа и снижения требований к блокировке при синхронизации журналов транзакций.
    • Мгновенные агрегации, которые обеспечивают кэширование агрегации на уровне сегмента.
    • Добавлен API профиля

V6.x

  • Lucene 7.x
  • Удаление типов в версии 6.0 не поддерживает существование нескольких типов в индексе.
  • Поиск в нескольких кластерах Elasticsearch, сохранение исходного индекса в кластере 5.x, поиск в кластерах для поиска как в кластерах 6.x, так и в кластерах 5.x.
  • Межкластерная репликация (CCR)
  • Более удобное обновление и миграция данных, миграция между основными версиями более упрощена, а опыт обновлен.
  • оптимизация производительности
    • Улучшения разреженных площадей, снижение затрат на хранение
    • Сортировка по индексу для ускорения выполнения запросов сортировки

V7.x

  • Lucene 8.0
  • Основное улучшение — официально отменена поддержка нескольких типов в одном индексе (только тип по умолчанию _doc)
  • Начиная с версии 7.1 функция «Безопасность» бесплатна.
  • ECK, который позволяет пользователям настраивать, управлять и эксплуатировать кластеры Elasticsearch в Kubernetes.
  • TransportClient устарел, поэтому Java-код ES7 может использовать только restclient.
  • новая функция
    • координация нового кластера
    • Более полный клиент REST
    • Script Score Query, следующее поколение скоринга
  • оптимизация производительности
    • Номер основного сегмента по умолчанию изменен с 5 на 1, чтобы избежать чрезмерного сегментирования.
    • Оптимизация производительности, более быстрый поиск Top K