Под устареванием понимаются процессы и функции, которые находятся в процессе устранения и (возможно) замены на более новые.
Как правило, функция не исчезает из одной версии в другую без предупреждения. Обычно это происходит в нескольких версиях. При использовании устаревшей функции в промежуточных версиях она будет продолжать работать как прежде, но при этом будут выдаваться предупреждения о том, что данная функция должна исчезнуть в будущем.
Как это работает
Существует несколько способов узнать, какие функции были устаревшими, в том числе: журналы устаревания, чтение документации на страницах разрушения и внимание к предупреждениям.
В журнале устаревания:
1 | {"type": "deprecation", "timestamp": "2020-01-16T12:50:11,263+0000", "level": "WARN", "component": "o.e.d.r.a.d.RestDeleteAction", "cluster.name": "docker-cluster", "node.name": "es01", "cluster.uuid": "VGTYFgunQ_STTKVz6YHAGg", "node.id": "wh5J7TJ-RD-pJE4JOUjVpw", "message": "[types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id})." } |
Чтение документации по изменениям для каждой версии:
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/breaking-changes-7.0.html
В kibana также может появиться предупреждение о запуске устаревшей команды в панели разработки:
1 | #! Deprecation: [types removal] Specifying types in document index requests is deprecated, use the typeless endpoints instead (/{index}/_doc/{id}, /{index}/_doc, or /{index}/_create/{id}). |
Важно принять меры в соответствии с этими предупреждениями. Хотя ваше приложение по-прежнему работает, игнорирование предупреждений почти наверняка приведет к сбоям в работе при последующем обновлении.
API для определения устаревших функций
Существует API устаревания, с помощью которого можно указать на устаревшие функции на вашем кластере:
Версия 5.6-6.8 | GET /_xpack/migration/deprecations |
Версия 7 | GET /_migration/deprecations |
Однако никогда не следует полагаться только на deprecation API. Если API возвращается без проблем, это не означает, что при миграции все в вашей конфигурации будет работать! Этим следует пользоваться в дополнение к журналу устаревания и документации по изменениям.
Примеры
- Удаление типов документов ("_type") . В версии 6 в одном индексе можно было использовать различные типы документов, но теперь эта возможность удалена. При использовании типов документов в запросах будут выдаваться предупреждения, а в версии 7 разрешено использовать только 1 тип документа в одном индексе. Ожидается, что эта функциональность будет полностью удалена в версии 8.
- Параметр discovery.zen.minimum_master_nodes разрешен, но игнорируется на узлах версии 7.x.
Множество других примеров можно найти в документации по изменениям.
Примечания и полезные сведения
Важно посетить ВСЕ изменения для каждой минорной версии между используемой версией и версией, на которую вы хотите перейти.
https://www.elastic.co/guide/en/elasticsearch/reference/8.11/migrating-8.10.html
Содержит информацию, которая не упоминается на следующей странице.
https://www.elastic.co/guide/en/elasticsearch/reference/8.11/migrating-8.11.html
Лучше всего перейти на страницу "breaking changes" той версии, на которую вы хотите перейти, а затем, используя ссылки, просмотреть все страницы минорных версий вплоть до той, на которую вы хотите перейти, обращая особое внимание на изменение мажорной версии (например, 8.0).