Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Руководство по миграции

Миграция на 8.0

В этом разделе обсуждаются изменения, о которых следует знать при миграции вашего приложения на Elasticsearch 8.0.

См. также Что нового в 8.17 и Справочные заметки.

Разрывающие изменения

Следующие изменения в Elasticsearch 8.0 могут повлиять на ваши приложения и помешать их нормальной работе. Перед обновлением до 8.0 ознакомьтесь с этими изменениями и выполните описанные шаги, чтобы смягчить последствия.

Изменения настроек кластера и узлов

logo cloud указывает на изменение поддерживаемого настроя для пользователя в Elasticsearch Service.

action.destructive_requires_name теперь по умолчанию равен true. logo cloud

Подробности
Значение по умолчанию для настройки action.destructive_requires_name изменяется с false на true в Elasticsearch 8.0.0.

Ранее, по умолчанию false, пользователи могли использовать шаблоны подстановок для удаления, закрытия или изменения блоков индексов. Для предотвращения случайного удаления индексов, которые могут соответствовать шаблону подстановки, мы теперь по умолчанию требуем, чтобы деструктивные операции явно называли индексы, которые должны быть изменены.

Воздействие
Для использования шаблонов подстановок для деструктивных действий установите action.destructive_requires_name в false, используя API настроек кластера https://www.elastic.co/guide/en/elasticsearch/reference/8.17/cluster-update-settings.html.

Вы больше не можете устанавливать xpack.searchable.snapshot.shared_cache.size на не-замороженные узлы.

Подробности
Вы больше не можете устанавливать xpack.searchable.snapshot.shared_cache.size на узел, у которого нет роли узла data_frozen. Эта настройка резервирует дисковое пространство для кэша совместного использования частично смонтированных индексов. Elasticsearch выделяет частично смонтированные индексы только узлам с ролью data_frozen.

Воздействие
Удалите xpack.searchable.snapshot.shared_cache.size из elasticsearch.yml для узлов, у которых нет роли data_frozen. Установка настройки на не-замороженный узел приведет к ошибке при запуске.

indices.query.bool.max_clause_count устарел и не имеет эффекта.

Подробности
Elasticsearch теперь динамически устанавливает максимальное количество разрешенных клаузов в запросе, используя эвристику, основанную на размере пула потоков поиска и размере кучи, выделенной JVM. Это ограничение имеет минимальное значение 1024 и в большинстве случаев будет больше (например, узел с 30 ГБ ОЗУ и 48 процессорами будет иметь максимальное количество клаузов около 27 000). Более крупные кучи приводят к более высоким значениям, а более крупные пулы потоков — к более низким.

Воздействие
Запросы с большим количеством клаузов следует избегать, когда это возможно. Если вы ранее увеличивали это значение, чтобы вместить сложные запросы, вам может потребоваться увеличить объем памяти, доступной Elasticsearch, или уменьшить размер вашего пула потоков поиска, чтобы больше памяти было доступно для каждого одновременного поиска.

В предыдущих версиях Lucene вы могли обойти это ограничение, вложенные логические запросы друг в друга, но теперь ограничение основано на общем количестве листов запросов в запросе в целом, и этот обходной путь больше не поможет.

Указание indices.query.bool.max_clause_count не повлияет, но сгенерирует предупреждения об устаревании. Чтобы избежать этих предупреждений, удалите настройку из elasticsearch.yml во время обновления или перезапуска узла.

indices.lifecycle.poll_interval должен быть больше, чем 1s.

Подробности
Слишком низкое значение indices.lifecycle.poll_interval может привести к чрезмерной нагрузке на кластер. Интервал опроса должен быть по крайней мере 1s (одна секунда).

Воздействие
Установите настройку indices.lifecycle.poll_interval на 1s или больше в elasticsearch.yml или через API настроек кластера API обновления настроек кластера.

Установка indices.lifecycle.poll_interval меньше, чем 1s в elasticsearch.yml приведет к ошибке при запуске. Запросы API обновления настроек кластера, устанавливающие indices.lifecycle.poll_interval меньше, чем 1s, вернут ошибку.

Реализации файлов и нативных реализаций теперь включены, если явно не отключены.

Подробности
Реализации файлов и нативных реализаций теперь включены, если явно не отключены. Если явно отключены, реализации файлов и нативные реализации остаются отключенными постоянно.

Ранее реализации файлов и нативные реализации имели следующие неявные поведения:

  • Если реализации файлов и нативные реализации не были настроены, они неявным образом отключались, если была настроена любая другая реализация.
  • Если любая другая реализация не была доступна, потому что реализации не были настроены, не разрешены лицензией или явно отключены, реализации файлов и нативные реализации включались, даже если они были явно отключены.

Воздействие
Чтобы явно отключить реализацию файла или нативную реализацию, установите соответствующую настройку file.<realm-name>.enabled или native.<realm-name>.enabled в false в пространстве имен xpack.security.authc.realms в elasticsearch.yml.

Следующий пример конфигурации отключает нативную реализацию и реализацию файла.

xpack.security.authc.realms:

  native.realm1.enabled: false
  file.realm2.enabled: false

  ...
Настройка order теперь обязательна.

Подробности
Настройка xpack.security.authc.realms.{type}.{name}.order теперь обязательна и должна быть указана для каждой явно настроенной реализации. Каждое значение должно быть уникальным.

Воздействие
Кластер не запустится, если требования не будут выполнены.

Например, следующая конфигурация неверна:

xpack.security.authc.realms.kerberos.kerb1:
  keytab.path: es.keytab
  remove_realm_name: false

И должна быть настроена как:

xpack.security.authc.realms.kerberos.kerb1:
  order: 0
  keytab.path: es.keytab
  remove_realm_name: false
cluster.routing.allocation.disk.include_relocations был удален.

Подробности
Elasticsearch теперь всегда учитывает размер перемещаемых фрагментов при принятии решений о распределении на основе использования дискового пространства узлов в кластере. В более ранних версиях вы могли отключить это, установив cluster.routing.allocation.disk.include_relocations в false. Это могло привести к плохим решениям о распределении, которые могли превысить пороговые значения и потребовать значительной дополнительной работы для исправления. Настройка cluster.routing.allocation.disk.include_relocations была удалена.

Воздействие
Удалите настройку cluster.routing.allocation.disk.include_relocations. Указание этой настройки в elasticsearch.yml приведет к ошибке при запуске.

cluster.join.timeout был удален.

Подробности
Настройка cluster.join.timeout была удалена. Попытки подключения больше не зависают.

Воздействие
Удалите cluster.join.timeout из elasticsearch.yml.

Настройки discovery.zen были удалены.

Подробности
Все настройки в пространстве имен discovery.zen больше не поддерживаются. Они существовали только для совместимости с прошлыми версиями (BWC) в 7.x. Это включает:

  • discovery.zen.minimum_master_nodes
  • discovery.zen.no_master_block
  • discovery.zen.hosts_provider
  • discovery.zen.publish_timeout
  • discovery.zen.commit_timeout
  • discovery.zen.publish_diff.enable
  • discovery.zen.ping.unicast.concurrent_connects
  • discovery.zen.ping.unicast.hosts.resolve_timeout
  • discovery.zen.ping.unicast.hosts
  • discovery.zen.ping_timeout
  • discovery.zen.unsafe_rolling_upgrades_enabled
  • discovery.zen.fd.connect_on_network_disconnect
  • discovery.zen.fd.ping_interval
  • discovery.zen.fd.ping_timeout
  • discovery.zen.fd.ping_retries
  • discovery.zen.fd.register_connection_listener
  • discovery.zen.join_retry_attempts
  • discovery.zen.join_retry_delay
  • discovery.zen.join_timeout
  • discovery.zen.max_pings_from_another_master
  • discovery.zen.send_leave_request
  • discovery.zen.master_election.wait_for_joins_timeout
  • discovery.zen.master_election.ignore_non_master_pings
  • discovery.zen.publish.max_pending_cluster_states
  • discovery.zen.bwc_ping_timeout

Воздействие
Удалите настройки discovery.zen из elasticsearch.yml. Указание этих настроек приведет к ошибке при запуске.

http.content_type.required был удален.

Подробности
Настройка http.content_type.required была устарела в Elasticsearch 6.0 и была удалена в Elasticsearch 8.0. Настройка была добавлена в Elasticsearch 5.3, чтобы подготовить пользователей к Elasticsearch 6.0, где автоматическое определение типа содержимого было удалено для HTTP-запросов.

Воздействие
Удалите настройку http.content_type.required из elasticsearch.yml. Указание этой настройки приведет к ошибке при запуске.

http.tcp_no_delay был удален.

Подробности
Настройка http.tcp_no_delay была устаревшей в версии 7.x и удалена в 8.0. Используйте http.tcp.no_delay вместо этого.

Воздействие
Замените настройку http.tcp_no_delay на http.tcp.no_delay. Указание значения http.tcp_no_delay в elasticsearch.yml приведёт к ошибке при запуске.

network.tcp.connect_timeout был удален.

Подробности
Настройка network.tcp.connect_timeout была устаревшей в версии 7.x и удалена в 8.0. Эта настройка была резервной настройкой для transport.connect_timeout.

Воздействие
Удалите настройку network.tcp.connect_timeout. Используйте настройку transport.connect_timeout для изменения значения таймаута подключения по умолчанию для клиентских подключений. Указание значения network.tcp.connect_timeout в elasticsearch.yml приведёт к ошибке при запуске.

node.max_local_storage_nodes был удален.

Подробности
Настройка node.max_local_storage_nodes была устаревшей в версии 7.x и удалена в 8.0. Узлы должны работать на отдельных путях данных, чтобы гарантировать, что каждый узел постоянно назначается одному пути данных.

Воздействие
Удалите настройку node.max_local_storage_nodes. Указание этой настройки в elasticsearch.yml приведёт к ошибке при запуске.

Настройка accept_default_password была удалена.

Подробности
Настройка xpack.security.authc.accept_default_password не имела никакого эффекта с момента выпуска Elasticsearch 6.0 и больше не разрешена.

Воздействие
Удалите настройку xpack.security.authc.accept_default_password из elasticsearch.yml. Указание этой настройки приведёт к ошибке при запуске.

Настройки roles.index.cache.* были удалены.

Подробности
Настройки xpack.security.authz.store.roles.index.cache.max_size и xpack.security.authz.store.roles.index.cache.ttl были удалены. Эти настройки были избыточными и устаревшими с момента выпуска Elasticsearch 5.2.

Воздействие
Удалите настройки xpack.security.authz.store.roles.index.cache.max_size и xpack.security.authz.store.roles.index.cache.ttl из elasticsearch.yml. Указание этих настроек приведёт к ошибке при запуске.

Настройка transport.profiles.*.xpack.security.type была удалена.

Подробности
Настройка transport.profiles.*.xpack.security.type больше не поддерживается. Клиент Transport был удалён, и весь клиентский трафик теперь использует HTTP-транспорт. Профили транспорта, использующие эту настройку, должны быть удалены.

Воздействие
Удалите настройку transport.profiles.*.xpack.security.type из elasticsearch.yml. Указание этой настройки в профиле транспорта приведёт к ошибке при запуске.

Настройка SAML-домена nameid_format больше не имеет значения по умолчанию.

Подробности
В SAML поставщики удостоверений (IdP) могут быть явно настроены на выдачу NameID в определенном формате или настраиваются для соответствия требованиям поставщика услуг (SP). SP объявляет свои требования в элементе NameIDPolicy запроса на SAML-аутентификацию. В Elasticsearch настройка SAML-домена nameid_format управляет значением NameIDPolicy.

Ранее значение по умолчанию для nameid_format было urn:oasis:names:tc:SAML:2.0:nameid-format:transient. Эта настройка создавала запросы на аутентификацию, которые требовали от IdP выдачи NameID в формате transient.

Значение по умолчанию было удалено, что означает, что Elasticsearch по умолчанию будет создавать запросы на SAML-аутентификацию, которые не налагают это требование на IdP. Если вы хотите сохранить предыдущее поведение, установите nameid_format в urn:oasis:names:tc:SAML:2.0:nameid-format:transient.

Воздействие
Если вы сейчас не настраиваете nameid_format явно, возможно, ваш IdP отклонит запросы на аутентификацию от Elasticsearch, поскольку запросы не указывают формат NameID (и ваш IdP настроен на ожидание его). Это несоответствие может привести к сбою настройки SAML. Если вы не уверены, настроен ли ваш IdP явно на использование определенного формата NameID, и хотите сохранить текущее поведение, попробуйте явно установить nameid_format в urn:oasis:names:tc:SAML:2.0:nameid-format:transient.

Настройка xpack.security.transport.ssl.enabled теперь требуется для настройки настроек xpack.security.transport.ssl.

Подробности
Теперь ошибка, настраивать любые настройки SSL для xpack.security.transport.ssl без одновременной настройки xpack.security.transport.ssl.enabled.

Воздействие
Если вы используете другие настройки xpack.security.transport.ssl, вы должны явно указать настройку xpack.security.transport.ssl.enabled.

Если вы не хотите включать SSL и сейчас используете другие настройки xpack.security.transport.ssl, сделайте следующее:

  • Явно укажите xpack.security.transport.ssl.enabled как false
  • Прекратите использование других настроек xpack.security.transport.ssl

Если вы хотите включить SSL, следуйте инструкциям в Шифрование коммуникаций между узлами в кластере. В качестве части этой настройки явно укажите xpack.security.transport.ssl.enabled как true.

Например, следующая настройка неверна:

xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

И должна быть настроена как:

xpack.security.transport.ssl.enabled: true 
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

или false.

Настройка xpack.security.http.ssl.enabled теперь требуется для настройки настроек xpack.security.http.ssl.

Подробности
Теперь ошибка, настраивать любые настройки SSL для xpack.security.http.ssl без одновременной настройки xpack.security.http.ssl.enabled.

Воздействие
Если вы используете другие настройки xpack.security.http.ssl, вы должны явно указать настройку xpack.security.http.ssl.enabled.

Если вы не хотите включать SSL и сейчас используете другие настройки xpack.security.http.ssl, сделайте следующее:

  • Явно укажите xpack.security.http.ssl.enabled как false
  • Прекратите использование других настроек xpack.security.http.ssl

Если вы хотите включить SSL, следуйте инструкциям в Шифрование HTTP-клиентских коммуникаций. В качестве части этой настройки явно укажите xpack.security.http.ssl.enabled как true.

Например, следующая настройка неверна:

xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]

И должна быть настроена как:

xpack.security.http.ssl.enabled: true 
xpack.security.http.ssl.certificate: elasticsearch.crt
xpack.security.http.ssl.key: elasticsearch.key
xpack.security.http.ssl.certificate_authorities: [ "corporate-ca.crt" ]

или false.

Сертификат и ключ xpack.security.transport.ssl теперь необходимы для включения SSL для интерфейса транспорта.

Подробности
Теперь ошибка, включать SSL для интерфейса транспорта без одновременной настройки сертификата и ключа с помощью настройки xpack.security.transport.ssl.keystore.path или настроек xpack.security.transport.ssl.certificate и xpack.security.transport.ssl.key.

Воздействие
Если xpack.security.transport.ssl.enabled установлено в true, предоставьте сертификат и ключ, используя настройку xpack.security.transport.ssl.keystore.path или настройки xpack.security.transport.ssl.certificate и xpack.security.transport.ssl.key. Если сертификат и ключ не предоставлены, Elasticsearch вернёт ошибку при запуске.

Сертификат и ключ xpack.security.http.ssl теперь необходимы для включения SSL для HTTP-сервера.

Подробности
Теперь ошибка, включать SSL для HTTP (Rest) сервера без одновременной настройки сертификата и ключа с помощью настройки xpack.security.http.ssl.keystore.path или настроек xpack.security.http.ssl.certificate и xpack.security.http.ssl.key.

Воздействие
Если xpack.security.http.ssl.enabled установлено в true, предоставьте сертификат и ключ, используя настройку xpack.security.http.ssl.keystore.path или настройки xpack.security.http.ssl.certificate и xpack.security.http.ssl.key. Если сертификат и ключ не предоставлены, Elasticsearch вернёт ошибку при запуске.

Ключевые хранилища и хранилища доверия PKCS#11 не могут быть настроены в elasticsearch.yml

Подробности
Настройки *.ssl.keystore.type и *.ssl.truststore.type больше не принимают "PKCS11" в качестве допустимого типа. Это относится ко всем настройкам SSL в Elasticsearch, включая

  • xpack.security.http.keystore.type
  • xpack.security.transport.keystore.type
  • xpack.security.http.truststore.type
  • xpack.security.transport.truststore.type

а также настройки SSL для областей безопасности, наблюдателя и мониторинга.

Использование хранилища ключей или хранилища доверия PKCS#11 в качестве хранилища по умолчанию JRE не затрагивается.

Воздействие
Если у вас настроено хранилище ключей PKCS#11 в вашем файле elasticsearch.yml, необходимо удалить эту конфигурацию и переключиться на поддерживаемый тип хранилища или настроить хранилище ключей PKCS#11 в качестве хранилища по умолчанию JRE.

Пользователь kibana был заменен на kibana_system.

Подробности
Пользователь kibana исторически использовался для аутентификации Kibana с Elasticsearch. Название этого пользователя вызывало путаницу и часто ошибочно использовалось для входа в Kibana. Он был переименован в kibana_system, чтобы уменьшить путаницу и лучше соответствовать другим встроенным системным учетным записям.

Воздействие
Замените любое использование пользователя kibana пользователем kibana_system. Указание пользователя kibana в kibana.yml приведет к ошибке при запуске.

Если ваш файл kibana.yml содержал:

elasticsearch.username: kibana

то вы должны обновить его, используя нового пользователя kibana_system:

elasticsearch.username: kibana_system

Новый пользователь kibana_system не сохраняет предыдущий пароль пользователя kibana. Вам необходимо явно установить пароль для пользователя kibana_system.

Настройки search.remote.* были удалены.

Подробности
В версии 6.5 эти настройки были устаревшими в пользу настроек cluster.remote. В версии 7.x мы обеспечили автоматическое обновление этих настроек до их аналогов cluster.remote. В версии 8.0.0 эти настройки были удалены. Elasticsearch откажется от запуска, если у вас есть эти настройки в вашей конфигурации или состоянии кластера.

Воздействие
Используйте заменяющие настройки cluster.remote. Прекратите использование настроек search.remote.*. Указание этих настроек в elasticsearch.yml приведет к ошибке при запуске.

Настройка pidfile была заменена на node.pidfile.

Подробности
Для обеспечения правильного именования всех настроек, настройка pidfile была предварительно устаревшей в версии 7.4.0 Elasticsearch и удалена в версии 8.0.0. Используйте вместо неё node.pidfile.

Воздействие
Используйте настройку node.pidfile. Прекратите использование настройки pidfile. Указание настройки pidfile в elasticsearch.yml приведет к ошибке при запуске.

Настройка processors была заменена на node.processors.

Подробности
Для обеспечения правильного именования всех настроек, настройка processors была предварительно устаревшей в версии 7.4.0 Elasticsearch и удалена в версии 8.0.0. Используйте вместо неё node.processors.

Воздействие
Используйте настройку node.processors. Прекратите использование настройки processors. Указание настройки processors в elasticsearch.yml приведет к ошибке при запуске.

Настройка node.processors больше не может превышать доступное число процессоров.

Подробности
Ранее было возможно установить число процессоров, используемых для задания размера пулов потоков, превышающее количество доступных процессоров. Поскольку это приводит к большему количеству контекстных переключений и потоков, но без увеличения количества физических ЦП для планирования этих дополнительных потоков, настройка node.processors теперь ограничена количеством доступных процессоров.

Воздействие
Если задано, убедитесь, что значение настройки node.processors не превышает количество доступных процессоров. Указание значения node.processors, превышающего количество доступных процессоров в elasticsearch.yml, приведет к ошибке при запуске.

Настройка cluster.remote.connect была удалена.

Подробности
В Elasticsearch 7.7.0 настройка cluster.remote.connect была устаревшей в пользу настройки node.remote_cluster_client. В Elasticsearch 8.0.0 настройка cluster.remote.connect была удалена.

Воздействие
Используйте настройку node.remote_cluster_client. Прекратите использование настройки cluster.remote.connect. Указание настройки cluster.remote.connect в elasticsearch.yml приведет к ошибке при запуске.

Настройка node.local_storage была удалена.

Подробности
В Elasticsearch 7.8.0 настройка node.local_storage была устаревшей, и начиная с Elasticsearch 8.0.0 все узлы потребуют локального хранилища. Таким образом, настройка node.local_storage была удалена.

Воздействие
Прекратите использование настройки node.local_storage. Указание этой настройки в elasticsearch.yml приведет к ошибке при запуске.

Настройка auth.password для мониторинга HTTP была удалена.

Подробности
В Elasticsearch 7.7.0 настройка xpack.monitoring.exporters.<exporterName>.auth.password была устаревшей в пользу настройки xpack.monitoring.exporters.<exporterName>.auth.secure_password. В Elasticsearch 8.0.0 настройка xpack.monitoring.exporters.<exporterName>.auth.password была удалена.

Воздействие
Используйте настройку xpack.monitoring.exporters.<exporterName>.auth.secure_password. Прекратите использование настройки xpack.monitoring.exporters.<exporterName>.auth.password. Указание настройки xpack.monitoring.exporters.<exporterName>.auth.password в elasticsearch.yml приведет к ошибке при запуске.

Настройки, используемые для отключения основных функций лицензии, были удалены.

Подробности
Следующие настройки были устаревшими в Elasticsearch 7.8.0 и удалены в Elasticsearch 8.0.0:

  • xpack.enrich.enabled
  • xpack.flattened.enabled
  • xpack.ilm.enabled
  • xpack.monitoring.enabled
  • xpack.rollup.enabled
  • xpack.slm.enabled
  • xpack.sql.enabled
  • xpack.transform.enabled
  • xpack.vectors.enabled

Эти основные функции лицензии теперь всегда включены.

Если вы отключили ILM, чтобы использовать другой инструмент для управления индексами Watcher, вы можете установить новую настройку xpack.watcher.use_ilm_index_management в false.

Воздействие
Прекратите использование удалённых настроек. Указание этих настроек в elasticsearch.yml приведет к ошибке при запуске.

Настройки, используемые для отсрочки восстановления кластера, ожидая определённого количества узлов-мастеров, были удалены.

Подробности
Следующие настройки кластера были удалены:

  • gateway.expected_nodes
  • gateway.expected_master_nodes
  • gateway.recover_after_nodes
  • gateway.recover_after_master_nodes

Безопасно восстановить кластер, как только большинство узлов, имеющих право быть мастерами, присоединятся, поэтому нет смысла ждать каких-либо дополнительных узлов-мастеров.

Воздействие
Прекратите использование удалённых настроек. При необходимости используйте gateway.expected_data_nodes или gateway.recover_after_data_nodes, чтобы отсрочить восстановление кластера, ожидая определённого количества узлов данных.

Настройки ролей устаревшего формата были удалены.

Подробности
Настройки ролей устаревшего формата:

  • node.data
  • node.ingest
  • node.master
  • node.ml
  • node.remote_cluster_client
  • node.transform
  • node.voting_only

были удалены. Вместо этого используйте настройку node.roles. Если вы ранее использовали настройки ролей устаревшего формата в кластере версии 7.13 или более поздней, на каждом вашем узле будет отображаться журнал устаревания с точным значением замены для node.roles.

Воздействие
Прекратите использование удалённых настроек. Указание этих настроек в elasticsearch.yml приведет к ошибке при запуске.

Настройка фильтра системных вызовов удалена.

Подробности
Elasticsearch использует фильтры системных вызовов, чтобы предотвратить возможность создания дочернего процесса. Это полезно для снижения риска удаленных эксплойтов кода. Эти фильтры системных вызовов включены по умолчанию и ранее настраивались через настройку bootstrap.system_call_filter. Начиная с Elasticsearch 8.0, фильтры системных вызовов будут обязательными. Поэтому настройка bootstrap.system_call_filter была устаревшей в Elasticsearch 7.13.0 и удалена в Elasticsearch 8.0.0.

Воздействие
Прекратите использование удаленной настройки. Указание этой настройки в конфигурации Elasticsearch приведет к ошибке при запуске.

Настройки фильтрации уровня удалены.

Подробности
Настройки кластера и индекса, заканчивающиеся на ._tier, которые использовались для фильтрации размещения фрагмента на определенном наборе узлов, были удалены. Вместо этого следует использовать настройку предпочтения уровня (tier preference), index.routing.allocation.include._tier_preference. Удаленные настройки:

Настройки кластера:

  • cluster.routing.allocation.include._tier
  • cluster.routing.allocation.exclude._tier
  • cluster.routing.allocation.require._tier

Настройки индекса:

  • index.routing.allocation.include._tier
  • index.routing.allocation.exclude._tier
  • index.routing.allocation.require._tier

Воздействие
Прекратите использование удаленных настроек. Указание любой из этих настроек кластера в конфигурации Elasticsearch приведет к ошибке при запуске. Любые индексы, использующие эти настройки, будут иметь сохраненные настройки (и они не будут действовать) при загрузке метаданных индекса.

Настройки пути к общим данным и данным по индексу устарели.

Подробности
Elasticsearch использует путь к общим данным в качестве базового пути для путей данных по каждому индексу. Эта функция ранее использовалась с репликами, использующими общие данные. Начиная с версии 7.13.0, эти настройки устарели. Начиная с версии 8.0, только существующие индексы, созданные в версии 7.x, смогут использовать настройки общего пути к данным и пути данных по индексу.

Воздействие
Прекратите использование устаревших настроек.

Настройка порогового значения для единственного узла данных устарела и теперь принимает только true.

Подробности
В версии 7.14 настройка cluster.routing.allocation.disk.watermark.enable_for_single_data_node со значением false устарела. Начиная с версии 8.0, единственно допустимым значением будет true. В будущих версиях настройка будет удалена, с поведением, аналогичным настройке true.

Если требуется старое поведение для кластера с единственным узлом данных, размещение на основе дисков можно отключить, установив cluster.routing.allocation.disk.threshold_enabled: false

Воздействие
Прекратите использование устаревшей настройки.

Настройка gateway.auto_import_dangling_indices удалена.

Подробности
Настройка кластера gateway.auto_import_dangling_indices удалена. Ранее с помощью этой настройки можно было автоматически импортировать висячие индексы. Однако автоматический импорт висячих индексов небезопасен. Вместо этого используйте API висячих индексов для управления и импорта висячих индексов.

Воздействие
Прекратите использование удаленной настройки. Указание этой настройки в elasticsearch.yml приведет к ошибке при запуске.

Пул потоков listener удален.

Подробности
Ранее транспортный клиент использовал пул потоков, чтобы гарантировать, что обратные вызовы слушателей не выполняются в потоках сети. Транспортный клиент удален в версии 8.0, и пул потоков больше не нужен.

Воздействие
Удалите настройки пула потоков listener из elasticsearch.yml для всех узлов. Указание настроек пула потоков listener в elasticsearch.yml приведет к ошибке при запуске.

Тип пула потоков fixed_auto_queue_size удален.

Подробности
Тип пула потоков fixed_auto_queue_size, ранее отмеченный как экспериментальная функция, был устарел в 7.x и удален в 8.0. Пулы потоков search и search_throttled теперь имеют тип fixed.

Воздействие
Не требуется никаких действий.

Несколько настроек transport были заменены.

Подробности
Следующие настройки были устаревшими в 7.x и удалены в 8.0. Каждая настройка имеет замену, введённую в 6.7.

  • transport.tcp.port заменена на transport.port
  • transport.tcp.compress заменена на transport.compress
  • transport.tcp.connect_timeout заменена на transport.connect_timeout
  • transport.tcp_no_delay заменена на transport.tcp.no_delay
  • transport.profiles.profile_name.tcp_no_delay заменена на transport.profiles.profile_name.tcp.no_delay
  • transport.profiles.profile_name.tcp_keep_alive заменена на transport.profiles.profile_name.tcp.keep_alive
  • transport.profiles.profile_name.reuse_address заменена на transport.profiles.profile_name.tcp.reuse_address
  • transport.profiles.profile_name.send_buffer_size заменена на transport.profiles.profile_name.tcp.send_buffer_size
  • transport.profiles.profile_name.receive_buffer_size заменена на transport.profiles.profile_name.tcp.receive_buffer_size

Воздействие
Используйте заменяющие настройки. Прекратите использование удалённых настроек. Указание удалённых настроек в elasticsearch.yml приведёт к ошибке при запуске.

Выборочное сжатие транспорта включено по умолчанию.

Подробности
До версии 8.0 сжатие транспорта было отключено по умолчанию. Начиная с версии 8.0, transport.compress по умолчанию устанавливается в indexing_data. Эта настройка означает, что распространение исходных данных индексирования будет сжиматься между узлами.

Воздействие
Внутриузловые передачи будут уменьшены по пути индексирования. В некоторых сценариях использование ЦП может увеличиться.

Сжатие транспорта по умолчанию — lz4.

Подробности
До версии 8.0, настройка transport.compression_scheme по умолчанию была deflate. Начиная с версии 8.0, transport.compress_scheme по умолчанию устанавливается в lz4.

До версии 8.0, настройка cluster.remote.<cluster_alias>.transport.compression_scheme по умолчанию была deflate, когда cluster.remote.<cluster_alias>.transport.compress была явно настроена. Начиная с версии 8.0, cluster.remote.<cluster_alias>.transport.compression_scheme по умолчанию будет переходить к transport.compression_scheme.

Воздействие
Эта настройка означает, что сжатие транспорта будет обеспечивать несколько более низкий уровень сжатия в обмен на меньшую нагрузку на ЦП.

Настройка узла repositories.fs.compress удалена.

Подробности
Для репозиториев с общим файловым хранилищем ("type": "fs"), настройка узла repositories.fs.compress ранее могла использоваться для включения сжатия для всех репозиториев с общим файловым хранилищем, где compress не было указано. Настройка repositories.fs.compress удалена.

Воздействие
Прекратите использование настройки узла repositories.fs.compress. Используйте настройку репозитория compress для включения сжатия. См. Настройки репозитория с общим файловым хранилищем.

При включенном режиме FIPS значение по умолчанию для хэша пароля — PBKDF2_STRETCH

Подробности
Если xpack.security.fips_mode.enabled установлено в true (см. FIPS 140-2), значение по умолчанию для xpack.security.authc.password_hashing.algorithm теперь равно pbkdf2_stretch.

В более ранних версиях эта настройка всегда по умолчанию была bcrypt, и проверка во время выполнения предотвращала запуск узла, если значение не было явно установлено на вариант "pbkdf2".

Для кластеров, не использующих режим FIPS 140, изменений нет.

Воздействие
Это изменение не должно повлиять на обновленные узлы. Любой узел с явно настроенным значением алгоритма хэширования пароля продолжит использовать это значение. Любой узел, не имевший явно настроенного алгоритма хэширования пароля в Elasticsearch 6.x или Elasticsearch 7.x, не смог бы запуститься.

Настройка xpack.monitoring.history.duration не будет удалять индексы, созданные metricbeat или elastic agent

Подробности

До версии 8.0 Elasticsearch обрабатывал удаление всех мониторинговых индексов внутренним образом, согласно настройке xpack.monitoring.history.duration.

При использовании metricbeat или elastic agent версии ≥ 8.0 для сбора данных мониторинга, индексы управляются политикой ILM. Если настройка присутствует, политика будет создана с xpack.monitoring.history.duration в качестве начального периода хранения.

Если вам необходимо настроить параметры хранения для данных мониторинга, собранных с помощью metricbeat, пожалуйста, обновите политику ILM .monitoring-8-ilm-policy напрямую.

Настройка xpack.monitoring.history.duration будет применена только к мониторинговым индексам, созданным с помощью (устаревшего) внутреннего сбора, а не к индексам, созданным metricbeat или agent.

Воздействие
После обновления убедитесь, что политика ILM .monitoring-8-ilm-policy соответствует вашим желаемым настройкам хранения.

Если вы используете только metricbeat или agent для сбора данных мониторинга, вы также можете удалить любые пользовательские настройки xpack.monitoring.history.duration.

Изменения в командной строке

Если вы используете Elasticsearch Service, пропустите этот раздел. Elasticsearch Service обрабатывает эти изменения за вас.

Инструмент elasticsearch-migrate был удалён.

Подробности
Инструмент elasticsearch-migrate предоставлял способ преобразования пользователей и ролей файлового домена в собственный домен. Он устарел начиная с Elasticsearch 7.2.0. Теперь пользователи и роли должны создаваться непосредственно в собственном домене.

Воздействие
Прекратите использование инструмента elasticsearch-migrate. Попытки использовать инструмент elasticsearch-migrate приведут к ошибке.

Изменения в настройках индекса

Прямой доступ к системным индексам устарел.

Подробности
Прямой доступ к системным индексам устарел и может быть запрещён в будущих версиях. Если вам необходимо получить доступ к системному индексу, создайте роль безопасности с правом доступа к индексу, нацеленным на конкретный индекс, и установите разрешение allow_restricted_indices на true. Обратитесь к разрешениям на индексы для получения информации о добавлении этого разрешения к разрешению на индекс.

Воздействие
Прямой доступ к системным индексам приводит к предупреждениям в заголовке ответов API. Если доступно, используйте Kibana или соответствующие API Elasticsearch для управления данными, к которым вы хотите получить доступ.

index.merge.policy.max_merge_at_once_explicit устарел и не имеет эффекта.

Подробности
Настройка индекса index.merge.policy.max_merge_at_once_explicit устарела и не имеет эффекта.

Ранее вы могли указать index.merge.policy.max_merge_at_once_explicit для установки максимального числа сегментов для слияния одновременно во время принудительного слияния или при удалении удалённых документов. В 8.0 это число не ограничено, независимо от настройки.

Воздействие
Указание index.merge.policy.max_merge_at_once_explicit не повлияет, но сгенерирует предупреждения об устаревании.

Чтобы избежать этих предупреждений об устаревании, прекратите использование этой настройки. Не указывайте настройку при создании новых индексов и удалите её из шаблонов индексов и компонентов.

Чтобы удалить настройку из существующего потока данных или индекса, укажите значение настройки как null, используя API обновления настроек индекса.

response = client.indices.put_settings(
  index: 'my-index-000001',
  body: {
    'index.merge.policy.max_merge_at_once_explicit' => nil
  }
)
puts response
PUT my-index-000001/_settings
{
  "index.merge.policy.max_merge_at_once_explicit": null
}
Настройка индекса index.max_adjacency_matrix_filters была удалена.

Подробности
Настройка индекса index.max_adjacency_matrix_filters была удалена. Ранее вы могли использовать эту настройку для конфигурации максимального количества фильтров для агрегации матрицы смежности. Настройка индекса indices.query.bool.max_clause_count теперь определяет максимальное количество фильтров для агрегации.

Воздействие
Прекратите использование настройки индекса index.max_adjacency_matrix_filters.

Запросы, включающие настройку индекса, вернут ошибку. Если вы обновляете кластер с индексом 7.x, который уже содержит эту настройку, Elasticsearch архивирует эту настройку.

Удалите настройку индекса из шаблонов индексов и компонентов. Попытки использовать шаблон, содержащий эту настройку, завершатся ошибкой и возвратом ошибки. Это включает автоматизированные операции, такие как действие ILM rollover.

Настройка index.force_memory_term_dictionary была удалена.

Подробности
Настройка index.force_memory_term_dictionary была введена в 7.0 как временная мера, чтобы пользователи могли отказаться от оптимизации, оставляющей словарь терминов в памяти при необходимости. Эта оптимизация теперь обязательна, и настройка удалена.

Воздействие
Прекратите использование настройки индекса index.force_memory_term_dictionary. Запросы, содержащие эту настройку, вернут ошибку.

Настройка index.soft_deletes.enabled была удалена.

Подробности
Создание индексов с отключёнными мягкими удалениями было устаревшим в 7.6 и больше не поддерживается в 8.0. Настройка index.soft_deletes.enabled больше не может быть установлена в значение false.

Воздействие
Прекратите использование настройки индекса index.soft_deletes.enabled. Запросы, устанавливающие index.soft_deletes.enabled в значение false, вернут ошибку.

Настройки index.translog.retention.age и index.translog.retention.size были удалены.

Подробности
Настройки сохранения журнала транзакций index.translog.retention.age и index.translog.retention.size фактически игнорировались в 7.4, устарели в 7.7 и были удалены в 8.0 в пользу мягких удалений.

Воздействие
Прекратите использование настроек индекса index.translog.retention.age и index.translog.retention.size. Запросы, включающие эти настройки, вернут ошибку.

Изменения в API Java

Пакет indexlifecycle был переименован в ilm в Java High Level REST Client.

Подробности
В клиенте High Level REST пакет indexlifecycle был переименован в ilm, чтобы соответствовать переименованию пакета внутри кода Elasticsearch.

Воздействие
Обновите свой рабочий процесс и приложения, чтобы использовать пакет ilm вместо indexlifecycle.

Изменения в Fuzziness.

Подробности
Для создания экземпляров Fuzziness используйте метод fromString и fromEdits вместо метода build, который принимал как строки, так и числовые значения. Несколько установщиков нечёткости в билдерах запросов (например, MatchQueryBuilder#fuzziness) теперь принимают только экземпляр Fuzziness вместо объекта.

Нечёткость ранее была снисходительной при парсинге произвольных числовых значений, при этом они неявно обрезались до одного из трёх допустимых расстояний редактирования 0, 1 или 2. Эта снисходительность теперь удалена, и класс будет генерировать ошибки при попытке создать экземпляр с другим значением (например, числа с плавающей запятой, такие как 1.3, раньше принимались, но обрезались до 1).

Воздействие
Используйте доступные константы (например, Fuzziness.ONE, Fuzziness.AUTO) или создайте свой собственный экземпляр, используя упомянутые выше фабричные методы. Используйте только разрешённые значения Fuzziness.

Изменения в Repository.

Подробности
Репозиторий больше не зависит от IndexShard. Контракт методов restoreShard и snapshotShard был сокращён до Store и MappingService для повышения возможности тестирования.

Воздействие
Нет необходимости в действиях.

Изменения в параметрах JVM

Если вы используете Elasticsearch Service, пропустите этот раздел. Elasticsearch Service обрабатывает эти изменения за вас.

es.disk.auto_release_flood_stage_block был удалён.

Подробности
Если у узла превышен порог переполнения дискового пространства, мы добавляем блокировку для всех его индексов, чтобы предотвратить дальнейшие записи в качестве последней попытки предотвратить полное исчерпание дискового пространства узла. По умолчанию, начиная с 7.4, блокировка автоматически снимается, когда узел снова опускается ниже высокого порога, но это поведение можно было отключить, установив системную переменную es.disk.auto_release_flood_stage_block в значение false. Это поведение больше не является необязательным, и эту системную переменную теперь нельзя устанавливать.

Воздействие
Прекратите использование системной переменной es.disk.auto_release_flood_stage_block. Установка этой системной переменной приведёт к ошибке при запуске.

es.rest.url_plus_as_space был удален.

Подробности
Начиная с версии 7.4, + в URL будет кодироваться как %2B всеми функциями REST API. Предыдущие версии обрабатывали + как один пробел. В предыдущих версиях, если ваше приложение требовало обработки + как одного пробела, вы могли вернуться к старому поведению, установив системную переменную es.rest.url_plus_as_space в значение true. Обратите внимание, что это поведение устарело, и установка этой системной переменной в значение true перестанет поддерживаться в версии 8.

Влияние
Обновите ваше приложение или рабочий процесс, предполагая, что + в URL кодируется как %2B.

es.unsafely_permit_handshake_from_incompatible_builds был удален.

Подробности
Elasticsearch имеет проверку, которая проверяет, что пары узлов с одинаковой версией работают с точно таким же билдом и, следовательно, используют один и тот же формат проводов друг с другом. В предыдущих версиях эту проверку можно было обойти, установив системную переменную es.unsafely_permit_handshake_from_incompatible_builds в значение true. Использование этой системной переменной теперь запрещено.

Влияние
Прекратите использование системной переменной es.unsafely_permit_handshake_from_incompatible_builds и убедитесь, что все узлы с одинаковой версией работают с точно таким же билдом. Установка этой системной переменной приведет к ошибке при запуске.

Изменения в ведении журнала

Журналы Elasticsearch JSON теперь соответствуют ECS.

Подробности
Журналы Elasticsearch JSON теперь соответствуют Elastic Common Schema (ECS). Ранее журналы Elasticsearch JSON использовали пользовательскую схему.

Влияние
Если ваше приложение анализирует журналы Elasticsearch JSON, обновите его, чтобы поддерживать новый формат ECS.

Elasticsearch больше не отправляет журналы устаревания или медленные журналы в текстовом формате.

Подробности
Elasticsearch больше не отправляет текстовый вариант следующих журналов:

  • Журналы устаревания
  • Журналы медленных индексирований
  • Журналы медленных поисков

Эти журналы теперь доступны только в формате JSON.

Серверные журналы по-прежнему доступны в формате JSON и текстового формате.

Влияние
Если ваше приложение анализирует текстовые журналы Elasticsearch, обновите его, чтобы использовать новые JSON-журналы ECS.

Журналы аудита перекатываются и архивируются по размеру.

Подробности
В дополнение к существующему ежедневный перекату, журналы аудита безопасности теперь также перекатываются по предельному размеру диска. Более того, перекаченные журналы также сжаты с помощью gzip.

Влияние
Изменились имена файлов журналов аудита, которые были перекачаны (но не имя текущего журнала). Если вы настроили автоматизированные инструменты для обработки этих файлов, вы должны настроить их для использования новых имен и, возможно, для учета архивов gzip вместо простого текста. Сборка Elasticsearch в Docker не затронута, потому что она ведёт журнал в stdout, где перекатывание не выполняется.

Изменения в маппинге

Индексы, созданные в Elasticsearch 6.x и более ранних версиях, не поддерживаются.

Подробности
Elasticsearch 8.0 может читать индексы, созданные в версии 7.0 или выше. Узел Elasticsearch 8.0 не будет запущен в присутствии индексов, созданных в версии Elasticsearch до 7.0.

Влияние
Переиндексируйте индексы, созданные в Elasticsearch 6.x или более ранних версиях с использованием Elasticsearch 7.x, если их необходимо перенести в Elasticsearch 8.x.

Закрытые индексы, созданные в Elasticsearch 6.x и более ранних версиях, не поддерживаются.

Подробности
В более ранних версиях узел запускался даже в случае наличия данных из индексов, созданных в версии до предыдущей основной версии, при условии, что эти индексы были закрыты. Elasticsearch теперь гарантирует, что он совместим с каждым индексом, открытым или закрытым, во время запуска.

Влияние
Переиндексируйте закрытые индексы, созданные в Elasticsearch 6.x или более ранних версиях с использованием Elasticsearch 7.x, если их необходимо перенести в Elasticsearch 8.x.

Максимальное количество контекстов завершения на поле теперь равно 10.

Подробности
Количество контекстов завершения в одном поле завершения ограничено 10.

Влияние
Используйте максимальное количество контекстов завершения 10 в поле завершения. Указание более 10 контекстов завершения вернет ошибку.

Вложенные поля в вложенных полях больше не поддерживаются.

Подробности
Раньше можно было определять вложенное поле внутри вложенного поля. Определение вложенных полей было устарело в 7.3 и теперь больше не поддерживается.

Влияние
Чтобы мигрировать маппинги, все случаи fields, которые встречаются внутри блока fields, должны быть удалены, либо путем выравнивания вложенных блоков fields до одного уровня, либо путем перехода на copy_to, если это уместно.

Параметр _field_names метаданных поля enabled был удален.

Подробности
Настройка устарела с версии 7.5 и больше не поддерживается в новых индексах. Маппинги для старых индексов по-прежнему будут работать, но будут выдавать предупреждение об устаревании.

Влияние
Параметр enabled для _field_names должен быть удален из шаблонов и маппингов. Отключение _field_names не требуется, потому что оно больше не несёт большой нагрузки на индекс.

Параметр boost в маппингах полей был удален.

Подробности
Усиления на этапе индексирования устарели с момента выпуска 5x, но всё ещё можно было объявлять усиления, специфичные для полей, в маппингах. Теперь это полностью удалено. Индексы, созданные в 7x и содержащие усиления маппингов, будут выдавать предупреждения, а усиления не будут иметь никакого эффекта в 8.0. Новые индексы вообще не позволят устанавливать усиления в их маппингах.

Влияние
Параметр boost должен быть удален из шаблонов и маппингов. Вместо этого используйте усиления непосредственно в запросах.

Форматы дат Java-time заменяют форматы joda-time.

Подробности
В версии 7.0 Elasticsearch перешёл с joda time на java time для обработки дат, форматирования и вычислений. Индексы, созданные в версии 7.0 и более поздних версиях, уже требуют использования маппингов с форматами дат java-time. Однако более ранние индексы, использующие форматы joda-time, должны быть переиндексированы для использования маппингов с форматами дат java-time.

Влияние
Более подробное руководство по миграции см. в руководстве по миграции на java-time.

Несколько параметров маппинга geo_shape были удалены.

Подробности
Следующие параметры маппинга geo_shape были устаревшими в 6.6:

  • tree
  • tree_levels
  • strategy
  • distance_error_pct

Эти параметры были удалены в 8.0.0.

Влияние
В 8.0 вы больше не можете создавать маппинги, которые включают эти параметры. Однако индексы 7.x, которые используют эти параметры маппинга, по-прежнему будут работать.

Тип данных поля sparse_vector был удален.

Подробности
Тип поля sparse_vector был устаревшим в 7.6 и теперь удален в 8.0. Мы не наблюдали большого интереса к этому экспериментальному типу поля и не видим ясного использования, так как он спроектирован. Если у вас есть отзывы или предложения по функциональности разреженных векторов, пожалуйста, дайте нам знать через GitHub или форум discuss.

Влияние
Прекратите использовать тип данных поля sparse_vector. Запросы, содержащие маппинг для этого типа данных поля, вернут ошибку.

Изменения в пакетировании

Если вы используете Elasticsearch Service, пропустите этот раздел. Elasticsearch Service обрабатывает эти изменения за вас.

Изменилась структура папки с данными.

Подробности
Данные каждого узла теперь хранятся непосредственно в каталоге данных, заданном параметром path.data, а не в ${path.data}/nodes/0, поскольку удаление параметра node.max_local_storage_nodes означает, что узлы больше не могут совместно использовать путь к данным.

Последствия
При запуске Elasticsearch автоматически переместит путь к данным в новую структуру. Автоматическая миграция не будет выполнена, если путь к данным содержит данные для более чем одного узла. Перед обновлением необходимо перейти к конфигурации, в которой у каждого узла свой путь к данным.

Если вы попытаетесь обновить конфигурацию, в которой в пути к данным есть данные для более чем одного узла, автоматическая миграция завершится ошибкой, и Elasticsearch откажется запускаться. Для решения этой проблемы необходимо выполнить миграцию вручную. Данные дополнительных узлов хранятся в папках с именами ${path.data}/nodes/1, ${path.data}/nodes/2 и так далее, и вы должны переместить каждую из этих папок в соответствующее место, а затем настроить соответствующий узел для использования этого места в качестве пути к данным. Если у ваших узлов в настройках path.data указано более одного пути к данным, вам следует переместить все соответствующие подпапки параллельно. Каждый узел использует одну и ту же подпапку (например, nodes/2) для всех своих путей к данным.

Убраны базовые базы данных geoip Maxmind.

Подробности
Базовые базы данных geoip Maxmind, которые поставлялись по умолчанию с Elasticsearch, были удалены. Эти базы данных устарели и могут приводить к некорректным результатам при выполнении запросов geoip.

По умолчанию, начиная с версии 7.13, эти предварительно упакованные базы данных geoip использовались в случае, если база данных не была указана в каталоге конфигурации или прежде чем загрузчик geoip загружал новые базы данных geoip. После завершения загрузки новых баз данных загрузчиком geoip эти предварительно упакованные базы данных больше не использовались.

Последствия
Если загрузчик geoip отключен и базы данных geoip не предоставлены в каталоге конфигурации каждого узла ingest, процессор geoip больше не будет выполнять геолокационные запросы и не будет помечать эти документы фактом, что запрашиваемая база данных больше недоступна.

После запуска кластера и до завершения загрузки самых актуальных баз данных загрузчиком geoip, процессор geoip не будет выполнять геолокационные запросы и помечать документы тем, что запрошенная база данных не доступна. После завершения загрузки загрузчиком geoip самых актуальных баз данных процессор geoip будет работать как обычно. Период, когда процессор geoip не может выполнять геолокационные запросы после запуска кластера, должен быть очень коротким.

Изменения в Painless

Класс JodaCompatibleZonedDateTime был удалён.

Подробности
В процессе перехода с Joda datetime на Java datetime для скриптов использовался промежуточный класс под названием JodaCompatibleZonedDateTime. Этот класс был удалён и заменён на ZonedDateTime. Любое использование приведения к типу JodaCompatibleZonedDateTime или использование методов, доступных только в JodaCompatibleZonedDateTime, в скриптах приведёт к ошибке компиляции и может помешать запуску обновлённого узла.

Последствия
Перед обновлением замените getDayOfWeek на getDayOfWeekEnum().value во всех скриптах. Любое использование getDayOfWeek, ожидающего возвращаемое значение int, приведёт к ошибке компиляции или времени выполнения и может помешать запуску обновлённого узла.

Следующие методы JodaCompatibleZonedDateTime должны быть заменены методами ZonedDateTime перед обновлением:

  • getMillis() → toInstant().toEpochMilli()
  • getCenturyOfEra() → get(ChronoField.YEAR_OF_ERA) / 100
  • getEra() → get(ChronoField.ERA)
  • getHourOfDay() → getHour()
  • getMillisOfDay() → get(ChronoField.MILLI_OF_DAY)
  • getMillisOfSecond() → get(ChronoField.MILLI_OF_SECOND)
  • getMinuteOfDay() → get(ChronoField.MINUTE_OF_DAY)
  • getMinuteOfHour() → getMinute()
  • getMonthOfYear() → getMonthValue()
  • getSecondOfDay() → get(ChronoField.SECOND_OF_DAY)
  • getSecondOfMinute() → getSecond()
  • getWeekOfWeekyear() → get(IsoFields.WEEK_OF_WEEK_BASED_YEAR)
  • getWeekyear() → get(IsoFields.WEEK_BASED_YEAR)
  • getYearOfCentury() → get(ChronoField.YEAR_OF_ERA) % 100
  • getYearOfEra() → get(ChronoField.YEAR_OF_ERA)
  • toString(String) → a DateTimeFormatter
  • toString(String, Locale) → a DateTimeFormatter

Изменения плагинов

Если вы используете Elasticsearch Service, пропустите этот раздел. Elasticsearch Service обрабатывает эти изменения за вас.

Плагины репозиториев S3, GCS и Azure теперь включены в Elasticsearch.

Подробности
В предыдущих версиях Elasticsearch для регистрации репозитория снимков, основанного на Amazon S3, Google Cloud Storage (GCS) или Microsoft Azure Blob Storage, сначала нужно было установить соответствующий плагин Elasticsearch, например repository-s3. Теперь эти плагины включены в Elasticsearch по умолчанию.

Последствия
Вам больше не нужно устанавливать следующие плагины, и не следует пытаться это сделать.

  • repository-azure
  • repository-gcs
  • repository-s3

Elasticsearch и инструмент командной строки elasticsearch-plugin были изменены, чтобы обрабатывать попытки установки и удаления этих плагинов, чтобы не нарушать существующую автоматизацию. В будущем попытки установки этих плагинов будут считаться ошибкой.

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

Если вы запускаете Elasticsearch с помощью Docker и управляете плагинами с помощью файла конфигурации, то при первом запуске Elasticsearch после обновления он удалит вышеуказанные плагины, если они уже установлены. Если какие-либо из этих плагинов указаны в вашем файле конфигурации, Elasticsearch проигнорирует их и выведет предупреждающее сообщение в журнале.

Плагины третьих сторон больше не могут перехватывать запросы REST (RestHandlerWrapper)

Подробности
В предыдущих версиях Elasticsearch плагины третьих сторон могли реализовать метод getRestHandlerWrapper для перехвата всех запросов REST на узел. Общим использованием этой функции было реализация пользовательских плагинов безопасности для замены встроенных функций безопасности. Эта точка расширения больше недоступна для плагинов третьих сторон.

Последствия
Некоторые плагины третьих сторон, разработанные для работы с более ранними версиями Elasticsearch, могут не быть совместимы с Elasticsearch версии 8.0 или более поздними.

Если вы полагаетесь на плагины, которые не разрабатываются и не поддерживаются Elastic, проконсультируйтесь с автором плагина и убедитесь, что плагин доступен для вашей целевой версии Elasticsearch перед обновлением.

Изменения в REST API

Удалены конечные точки REST API, содержащие _xpack.

Подробности
В версии 7.0 мы устарели конечные точки REST API, содержащие _xpack в своём пути. Эти конечные точки были удалены в версии 8.0. Каждая устаревшая и удалённая конечная точка заменена новой конечной точкой, которая не содержит _xpack. Например, /{index}/_xpack/graph/_explore заменена на /{index}/_graph/explore.

Последствия
Используйте заменяющие конечные точки REST API. Запросы, отправленные на конечные точки API _xpack, вернут ошибку.

Совместимость
При запросе совместимости с API, любые запросы, содержащие префикс `_xpack`, перенаправляются на соответствующий URL без префикса _xpack.

Удалены конечные точки API, содержащие типы сопоставлений.

Подробности
Типы сопоставлений были удалены. Конечные точки API, содержащие тип сопоставления, также были удалены. Используйте вместо этого конечную точку без типа.

API Конечная точка API с типом Конечная точка API без типа

Массовая обработка

<target>/<type>/_bulk

<target>/_bulk

Подсчет

<target>/<type>/_count

<target>/_count

Удаление

<index>/<type>/<_id>

<index>/_doc/<_id>

Удаление по запросу

<target>/<type>/_delete_by_query

<target>/_delete_by_query

Объяснение

<index>/<type>/<_id>/_explain

<index>/_explain/<_id>

Получение

<index>/<type>/<_id>

<index>/_doc/<_id>

<index>/<type>/<_id>/_source

<index>/_source/<_id>

Получение сопоставления поля

_mapping/<type>/field/<field>

_mapping/field/<field>

<target>/_mapping/<type>/field/<field>

<target>/_mapping/field/<field>

Получение сопоставления

_mapping/<type>

_mapping или <target>/_mapping

<target>/<type>/_mapping

<target>/_mapping

<target>/_mapping/<type>

<target>/_mapping

Исследование графа

<index>/<type>/_graph/explore

<index>/_graph/explore

Индексирование

<target>/<type>/<_id>/_create

<target>/_create/<_id>

<target>/<type>

<target>/_doc

<target>/<type>/<_id>

<target>/_doc/<_id>

Многократное получение

<index>/<type>/_mget

<index>/_mget

Многократный поиск

<target>/<type>/_msearch

<target>/_msearch

Шаблон многократного поиска

<target>/<type>/_msearch/template

<target>/_msearch/template

Многократные векторы терминов

<index>/<type>/_mtermvectors

<index>/_mtermvectors

Поиск с агрегацией

<target>/<type>/_rollup_search

<target>/_rollup_search

Поиск

<target>/<type>/_search

<target>/_search

Шаблон поиска

<target>/<type>/_search/template

<target>/_search/template

Векторы терминов

<index>/<mapping_type>/<_id>/_termvectors

<index>/_termvectors<_id>

<index>/<mapping_type>/_termvectors

<index>/_termvectors

Обновление

<index>/<type>/<_id>/_update

<index>/_update/<_id>

Обновление по запросу

<target>/<type>/_update_by_query

<target>/_update_by_query

Обновление сопоставления

<target>/<type>/_mapping

<target>/_mapping

<target>/_mapping/<type>

<target>/_mapping

_mapping/<type>

<target>/_mapping

Проверка

<target>/<type>/_validate/query

<target>/_validate/query

Последствия
Обновите свое приложение для использования конечных точек REST API без типа. Запросы к конечным точкам, содержащим тип сопоставления, вернут ошибку.

Совместимость
При запросе совместимости REST API, если запрос включает в себя пользовательский тип сопоставления, он игнорируется. Запрос перенаправляется на соответствующий URL без типа. Пользовательские типы сопоставлений в телах запросов и HTTP-параметрах, связанных с типом, игнорируются, а ответы, где это необходимо, включают _type : _doc.

Поиск между кластерами (CCS) теперь совместим только со старой предыдущей версией.

Подробности
В 8.0+ Elastic поддерживает поиск из локального кластера в удаленный кластер, работающий:

  • В предыдущей версии.
  • В той же версии.
  • В более новой версии в той же основной версии.

Elastic также поддерживает поиск из локального кластера, работающего в последней версии основной версии, в удаленный кластер, работающий в любой версии следующей основной версии. Например, локальный кластер 7.17 может искать в любом удаленном кластере 8.x.

Версия удалённого кластера

Версия локального кластера

6.8

7.1–7.16

7.17

8.0

8.1

8.2

8.3

8.4

8.5

8.6

8.7

8.8

8.9

8.10

8.11

8.12

8.13

8.14

8.15

8.16

8.17

6.8

Yes

Yes

Yes

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

7.1–7.16

Yes

Yes

Yes

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

7.17

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.0

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.1

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.2

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.3

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.4

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.5

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.6

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.7

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.8

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.9

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.10

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.11

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.12

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

Yes

Yes

8.13

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

Yes

8.14

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Yes

8.15

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

8.16

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

8.17

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

No

Yes

Yes

Для API поиска EQL локальные и удаленные кластеры должны использовать одну и ту же версию Elasticsearch, если у них версии до 7.17.7 (включительно) или до 8.5.1 (включительно).

Например, локальный кластер версии 8.0 может выполнять поиск в удаленном кластере версии 7.17 или любом удалённом кластере версии 8.x. Однако поиск из локального кластера 8.0 в удаленный кластер 7.16 или 6.8 не поддерживается.

Ранее мы также поддерживали поиск в удаленных кластерах, работающих на:

  • Любой младшей версии основной версии локального кластера.
  • Последней младшей версии предыдущей основной версии.

Однако такие поиски могут привести к неопределенному поведению.

Последствия
Если вы выполняете межкластерные поиски только в удаленных кластерах, использующих ту же или более новую версию, никаких изменений не требуется.

Если вы ранее искали в удаленных кластерах с более ранней версией Elasticsearch, см. Обеспечение поддержки межкластерного поиска для рекомендаций по решению проблем.

Межкластерный поиск с недопустимой конфигурацией все еще может работать. Однако такие поиски не тестируются Elastic, и их поведение не гарантируется.

Агрегация terms больше не поддерживает ключ сортировки _term.

Подробности
Агрегация terms больше не поддерживает ключ _term в значениях order. Чтобы отсортировать корзины по своему термину, используйте _key вместо этого.

Последствия
Прекратите использование ключа сортировки _term. Запросы, включающие ключ сортировки _term, вернут ошибку.

Совместимость
При запросе совместимости rest-api ключ сортировки _term игнорируется, и вместо этого используется key.

Агрегация date_histogram больше не поддерживает ключ сортировки _time.

Подробности
Агрегация date_histogram больше не поддерживает ключ _time в значениях order. Чтобы отсортировать корзины по их ключу, используйте _key вместо этого.

Последствия
Прекратите использование ключа сортировки _time. Запросы, включающие ключ сортировки _time, вернут ошибку.

Совместимость
При запросе совместимости rest-api ключ сортировки _time игнорируется, и вместо этого используется _key.

Агрегация moving_avg была удалена.

Подробности
Агрегация moving_avg была устаревшей в 6.4 и была удалена. Для расчета скользящих средних используйте агрегацию moving_fn вместо этого.

Последствия
Прекратите использование агрегации moving_avg. Запросы, содержащие агрегацию moving_avg, вернут ошибку.

Параметр percents агрегации percentiles больше не поддерживает дублирующиеся значения.

Подробности
Если вы укажете параметр percents с агрегацией percentiles, его значения должны быть уникальными. В противном случае произойдет исключение.

Последствия
Используйте уникальные значения в параметре percents агрегации percentiles. Запросы, содержащие дублирующиеся значения в параметре percents, вернут ошибку.

Параметр interval агрегации date_histogram больше недействителен.

Подробности
Теперь ошибка указывать параметр interval для date_histogram агрегации или https://www.elastic.co/guide/en/elasticsearch/reference/8.17/search-aggregations-bucket-composite-aggregation.html#_date_histogram[composite date_histogram источник]. Вместо этого, пожалуйста, используйте calendar_interval или fixed_interval соответственно.

Последствия
Использование параметра interval в агрегации date_histogram или составном источнике date_histogram теперь вызовет ошибку. Вместо этого, пожалуйста, используйте более конкретные параметры fixed_interval или calendar_interval.

Совместимость
При запросе совместимости rest-api параметр interval адаптируется к фиксированному или календарному интервалу.

Имена токенизаторов nGram и edgeNGram были удалены.

Подробности
Имена токенизаторов nGram и edgeNGram, которые были устаревшими с версии 6.4, были удалены. Оба токенизатора могут использоваться только под их альтернативными именами ngram и edge_ngram с версии 7.0.

Последствия
Используйте эквивалентные токенизаторы ngram и edge_ngram. Запросы, содержащие имена токенизаторов nGram и edgeNGram, вернут ошибку.

Имена токенизаторов nGram и edgeNGram были удалены.

Подробности
Имена токенизаторов nGram и edgeNGram были устаревшими с 7.6 и больше не поддерживаются для новых индексов. Картирования для индексов, созданных после 7.6, будут по-прежнему работать, но будут выдавать предупреждение об устаревании. Имя токенизатора должно быть изменено на полностью эквивалентные имена ngram или edge_ngram для новых индексов и в шаблонах индексов.

Последствия
Используйте токенизаторы ngram и edge_ngram. Запросы на создание новых индексов с использованием имен токенизаторов nGram и edgeNGram вернут ошибку.

Статистика in_flight_requests была переименована в inflight_requests в журналах и диагностических API.

Подробности
Имя блокировщика запросов в процессе обработки в выходных данных логов и диагностических API (например, API статистики узла) изменяется с in_flight_requests на inflight_requests для соответствия имени соответствующих настроек.

Последствия
Обновите свои рабочие процессы и приложения, чтобы использовать статистику inflight_requests вместо in_flight_requests.

Изменен API-эндпоинт исключений конфигурации голосования.

Подробности
API POST /_cluster/voting_config_exclusions/{node_filter} был удалён в пользу POST /_cluster/voting_config_exclusions?node_names=... и POST /_cluster/voting_config_exclusions?node_ids=..., которые позволяют указать имена или идентификаторы узлов для исключения.

Последствия
Используйте POST /_cluster/voting_config_exclusions?node_ids=... и укажите узлы для исключения вместо использования фильтра узлов. Запросы, отправленные к API-эндпоинту /_cluster/voting_config_exclusions/{node_filter}, вернут ошибку.

Индексы удалённых систем не отслеживаются автоматически, если они соответствуют шаблону автоматического отслеживания.

Подробности
Индексы удалённых систем, соответствующие шаблону автоматического отслеживания, не будут автоматически настраиваться как индекс-фолловер.

Последствия
Явно создайте индекс-фолловер, чтобы отслеживать индекс удалённой системы, если это нужно.

Функция EQL wildcard была удалена.

Подробности
Функция wildcard была устаревшей в Elasticsearch 7.13.0 и была удалена.

Последствия
Используйте like или regex ключа вместо этого.

Действие ILM freeze теперь является бесполезным действием.

Подробности
Действие заморозки ILM теперь является бесполезным действием и не выполняет никаких действий над индексом, так как API-эндпоинт заморозки был удален в 8.0.

Последствия
Обновите ваши политики ILM, чтобы удалить действие freeze из фазы cold.

Дополнительная валидация для политик ILM.

Подробности
Для создания или обновления политики ILM теперь требуется, чтобы все ссылающиеся репозитории снимков и политики SLM существовали.

Последствия
Обновите свой код или управление конфигурацией, чтобы убедиться, что репозитории и политики SLM созданы перед любыми политиками, которые на них ссылаются.

Удален устаревший API _upgrade.

Подробности
Ранее API _upgrade обновлял индексы с предыдущей основной версии до текущей. Для этой цели следует использовать API _reindex.

Последствия
Запросы к старому API _upgrade вернут ошибку.

Удален устаревший API заморозки индекса.

Подробности
API заморозки индекса (POST /<index>/_freeze) был удалён. Улучшения в использовании кучи памяти устранили причину заморозки индексов. Вы по-прежнему можете размораживать существующие замороженные индексы с помощью API разморозки индекса. Для некоторых случаев использования замороженный уровень может быть подходящим заменителем замороженных индексов. Подробнее см. уровни данных.

Последствия
Запросы к старому API заморозки индекса вернут ошибку.

Параметры max_num_segments и only_expunge_deletes API слияния с силой не могут быть оба указаны в одном запросе.

Подробности
Ранее API слияния с силой допускал одновременную установку параметров only_expunge_deletes и max_num_segments с нестандартными значениями. Однако параметр max_num_segments молча игнорировался при установке only_expunge_deletes в значение true, создавая ложное впечатление о его применении.

Последствия
При использовании API слияния с силой не указывайте значения для обоих параметров max_num_segments и only_expunge_deletes. Запросы, содержащие значения для обоих параметров, вернут ошибку.

Параметр template API создания или обновления шаблона индекса был удалён.

Подробности
В 6.0 мы устарели параметр template в запросах создания или обновления шаблона индекса в пользу использования index_patterns. Поддержка параметра template была удалена в 8.0.

Последствия
Используйте параметр index_patterns API создания или обновления шаблона индекса . Запросы, содержащие параметр template, вернут ошибку.

Совместимость
При запросе совместимости rest-api параметр template отображается как index_patterns.

Синхронизированное сброс удалено.

Подробности
Синхронизированный сброс был устаревшим в 7.6 и удалён в 8.0. Используйте обычный сброс, так как он имеет тот же эффект, что и синхронизированный сброс в 7.6 и более поздних версиях.

Последствия
Используйте API сброса. Запросы к эндпоинтам /<index>/flush/synced или /flush/synced вернут ошибку.

Совместимость
При запросе совместимости rest-api запрос на синхронизированный сброс перенаправляется на эквивалентный несинхронизированный URL сброса.

Изменилось значение по умолчанию для параметра ?wait_for_active_shards API закрытия индекса.

Подробности
При закрытии индекса в более ранних версиях Elasticsearch по умолчанию не ожидал, пока фрагменты закрытого индекса будут должным образом назначены перед возвратом. Начиная с версии 8.0, поведение по умолчанию заключается в ожидании назначения фрагментов в соответствии с index.write.wait_for_active_shards настройкой индекса.

Последствия
Примите новое поведение или укажите ?wait_for_active_shards=0, чтобы сохранить старое поведение, если необходимо.

Параметр запроса types API статистики индекса был удален.

Подробности
Параметр запроса types API статистики индекса был удален. Ранее вы могли комбинировать types с параметром запроса indexing, чтобы вернуть статистику индексирования для определённых типов отображения. Типы отображения были удалены в 8.0.

Последствия
Прекратите использование параметра запроса types. Запросы, содержащие этот параметр, вернут ошибку.

Совместимость
При запросе совместимости rest-api, параметр запроса types игнорируется, и возвращаются данные статистики для всего индекса.

Параметр ecs процессора поглощения user_agent не имеет эффекта.

Подробности
В 7.2 мы устарели параметр ecs для процессора поглощения user_agent. В 8.x процессор поглощения user_agent будет возвращать только поля Elastic Common Schema (ECS), независимо от значения ecs.

Последствия
Чтобы избежать предупреждений об устаревании, удалите параметр из своих конвейеров поглощения. Если конвейер указывает значение ecs, это значение игнорируется.

Параметр запроса include_type_name был удалён.

Подробности
Параметр запроса include_type_name был удалён из API создания индекса, шаблона индекса и отображения. Ранее вы могли установить include_type_name в значение true, чтобы указать, что запросы и ответы должны включать имя типа отображения. Типы отображений были удалены в 8.x.

Последствия
Прекратите использование параметра запроса include_type_name. Запросы, содержащие этот параметр, вернут ошибку.

Совместимость
При запросе совместимости rest-api параметр запроса include_type_name игнорируется, и любые пользовательские типы отображений в запросе удаляются.

Переиндексация с удаленного узла теперь повторно кодирует имена индексов, закодированные в URL.

Подробности
Раньше переиндексация с удаленного узла допускала имена индексов, закодированные в URL, и не перекодировала их при генерации запроса поиска для удаленного узла. Эта свобода действия была устранена, и теперь все имена индексов правильно кодируются при переиндексации, что генерирует запросы удаленного поиска.

Воздействие
Укажите не закодированные в URL имена индексов для запросов переиндексации с удаленного узла.

В API переиндексации, удаления по запросу и обновления по запросу параметр size был переименован.

Подробности
Ранее запрос _reindex содержал две разные спецификации размера в теле запроса:

  • На внешнем уровне, определяющем максимальное количество документов для обработки
  • Внутри элемента source, определяющего размер скролла/пакета.

Внешний параметр size был переименован в max_docs, чтобы избежать путаницы и прояснить его семантику.

Аналогично, параметр size был переименован в max_docs для _delete_by_query и _update_by_query, чтобы сохранить согласованность 3 интерфейсов.

Воздействие
Используйте заменяющие параметры. Запросы, содержащие параметр size, вернут ошибку.

Совместимость
При запросе rest-api-compatibility параметр size сопоставляется с параметром max_docs.

API обновления по запросу теперь отклоняет неподдерживаемые поля script.

Подробности
Запрос API обновления по запросу, включающий неподдерживаемое поле в объекте script, теперь возвращает ошибку. Раньше API молча игнорировал эти неподдерживаемые поля.

Воздействие
Чтобы избежать ошибок, удалите неподдерживаемые поля из объекта script.

Параметр запроса local API узлов cat был удалён.

Подробности
Параметр ?local для API GET _cat/nodes был устаревшим в версии 7.x и отклоняется в версии 8.0. Этот параметр заставлял API использовать локальное состояние кластера для определения узлов, возвращаемых API, а не состояние кластера из мастера, но этот API запрашивает информацию с каждого выбранного узла независимо от параметра ?local, что означает, что этот API не работает в полностью локальном режиме для узлов.

Воздействие
Прекратите использование параметра запроса ?local. Запросы API узлов cat, содержащие этот параметр, вернут ошибку.

Параметр запроса local API фрагментов cat был удалён.

Подробности
Параметр ?local для API GET _cat/shards был устаревшим в версии 7.x и отклоняется в версии 8.0. Этот параметр заставлял API использовать локальное состояние кластера для определения узлов, возвращаемых API, а не состояние кластера из мастера, но этот API запрашивает информацию с каждого выбранного узла независимо от параметра ?local, что означает, что этот API не работает в полностью локальном режиме для узлов.

Воздействие
Прекратите использование параметра запроса ?local. Запросы API фрагментов cat, содержащие этот параметр, вернут ошибку.

Параметр запроса local API индексов cat был удалён.

Подробности
Параметр ?local для API GET _cat/indices был устаревшим в версии 7.x и отклоняется в версии 8.0. Этот параметр заставлял API использовать локальное состояние кластера для определения узлов, возвращаемых API, а не состояние кластера из мастера, но этот API запрашивает информацию с каждого выбранного узла независимо от параметра ?local, что означает, что этот API не работает в полностью локальном режиме для узлов.

Воздействие
Прекратите использование параметра запроса ?local. Запросы API индексов cat, содержащие этот параметр, вернут ошибку.

Параметр запроса local API отображения полей get был удалён.

Подробности
Параметр local для API отображения полей get был устаревшим в версии 7.8 и удалён в версии 8.0. Этот параметр не выполнял никаких действий, и отображения полей всегда извлекаются локально.

Воздействие
Прекратите использование параметра запроса local. Запросы API отображения полей get, содержащие этот параметр, вернут ошибку.

Запись данных в API задач устарела.

Подробности
API записи данных в задачи машинного обучения post data to jobs API устарел начиная с версии 7.11.0 и будет удалён в будущей основной версии.

Воздействие
Используйте datafeeds вместо этого.

Свойство job_id API обновления datafeeds было удалено.

Подробности
Возможность обновления job_id в datafeed была устаревшим в версии 7.3.0 и удалена в 8.0.

Воздействие
Невозможно перемещать datafeeds между заданиями по обнаружению аномалий.

API создания репозитория и удаления репозитория возвращают код состояния 409, когда репозиторий используется, вместо 500.

Подробности
API создания или обновления репозитория снимка и удаления репозитория снимка возвращают код состояния 409, когда запрос пытается изменить существующий репозиторий, который используется, вместо кода состояния 500.

Воздействие
Обновите код клиента, обрабатывающий создание и удаление репозиториев, чтобы отразить это изменение.

Свойство allow_no_datafeeds было удалено из API машинного обучения.

Подробности
Свойство allow_no_datafeeds было устаревшим в API cat datafeeds, get datafeeds, статистики datafeed и остановки datafeeds в версии 7.10.0.

Воздействие
Используйте allow_no_match вместо этого.

Свойство allow_no_jobs было удалено из API машинного обучения.

Подробности
Свойство allow_no_jobs было устаревшим в API cat anomaly detectors, закрытия задач обнаружения аномалий, получения задач обнаружения аномалий, получения статистики задач обнаружения аномалий и получения общих ведер в версии 7.10.0.

Воздействие
Используйте allow_no_match вместо этого.

Конечная точка StartRollupJob теперь возвращает успешный статус, если задача уже запущена.

Подробности
Ранее попытка запуска уже запущенной задачи rollup приводила к исключению 500 InternalServerError: Cannot start task for Rollup Job [job] because state was [STARTED].

Теперь попытка запуска уже запущенной задачи просто вернет успешный ответ 200 OK: started.

Воздействие
Обновите свой рабочий процесс и приложения, предполагая, что статус 200 в ответ на попытку запуска задачи rollup означает, что задача находится в активном запуске. Сам запрос может запустить задачу, или она уже работала, и поэтому запрос не оказал никакого влияния.

Сохранённые скрипты больше не поддерживают пустые скрипты или шаблоны поиска.

Подробности
Параметр source API создания или обновления сохранённого скрипта не может быть пустым.

Воздействие
Перед обновлением используйте API удаления сохранённого скрипта для удаления всех пустых сохранённых скриптов или шаблонов поиска. В версии 8.0 Elasticsearch удалит все пустые сохранённые скрипты или пустые шаблоны поиска из состояния кластера. Запросы на создание сохранённого скрипта или шаблона поиска с пустым source вернут ошибку.

Параметр code API создания или обновления хранимой скрипта был удален.

Подробности
Параметр code API создания или обновления хранимой скрипта был удален. Используйте вместо него параметр source.

Воздействие
Прекратите использование параметра code. Запросы, содержащие этот параметр, вернут ошибку.

Поиск по полю _type больше не поддерживается.

Подробности
В 8.x метаданные поля _type были удалены. Теперь Elasticsearch обрабатывает поиск по полю _type как поиск по несуществующему полю. Поиск по несуществующему полю не находит ни одного документа, независимо от запроса.

В 7.x поиск по полю _doc в поле _type соответствовал тем же документам, что и запрос match_all.

Воздействие
Удалите запросы по полю _type из ваших запросов и шаблонов поиска. Поиск, содержащий эти запросы, может не возвращать результатов.

API многократного поиска теперь анализирует пустую первую строку как метаданные действия в текстовых файлах.

Подробности
API многократного поиска теперь анализирует пустую первую строку как пустые метаданные действия, когда вы предоставляете текстовый файл в качестве тела запроса, например, при использовании флага --data-binary curl.

API больше не поддерживает текстовые файлы, содержащие:

  • Пустую первую строку, за которой следует строка, содержащая только {}.
  • Пустую первую строку, за которой следует еще одна пустая строка.

Воздействие
Не предоставляйте API многократного поиска недопустимый текстовый файл. Запросы, содержащие недопустимый файл, вернут ошибку.

Опция сортировки unmapped_type: string была удалена.

Подробности
Запросы поиска больше не поддерживают опцию сортировки unmapped_type: string. Вместо этого используйте unmapped_type: keyword для обработки несуществующего поля так, как если бы у него был тип поля keyword, но игнорировать его значения при сортировке.

Воздействие
Прекратите использование unmapped_type: string. Запросы поиска, содержащие опцию сортировки unmapped_type: string, вернут ошибки фрагментации.

Агрегирование и сортировка по полю _id запрещены по умолчанию.

Подробности
Раньше было возможно агрегировать и сортировать по встроенному полю _id, загружая дорогостоящую структуру данных fielddata. Это было устаревшим в 7.6 и теперь запрещено по умолчанию в 8.0.

Воздействие
Следует избегать агрегирования и сортировки по полю _id. В качестве альтернативы содержимое поля _id можно дублировать в другое поле с включенными docvalues (обратите внимание, что это не относится к автоматически сгенерированным идентификаторам).

Запрос common был удален.

Подробности
Запрос common, устаревший в 7.x, был удален в 8.0. Ту же функциональность можно получить с помощью запроса match, если общее количество совпадений не отслеживается.

Воздействие
Прекратите использование запроса common. Запросы поиска, содержащие запрос common, вернут ошибку.

Параметр cutoff_frequency был удален из запросов match и multi_match.

Подробности
Параметр cutoff_frequency, устаревший в 7.x, был удален в 8.0 из запросов match и multi_match. Ту же функциональность можно получить без какой-либо настройки, если общее количество совпадений не отслеживается.

Воздействие
Прекратите использование параметра cutoff_frequency. Запросы поиска, содержащие этот параметр в запросе match или multi_match, вернут ошибку.

Свойства nested_filter и nested_path были удалены из параметра тела запроса sort API поиска.

Подробности
Опции nested_filter и nested_path, устаревшие в 6.x, были удалены в пользу контекста nested.

Воздействие
Прекратите использование свойств nested_filter и nested_path параметра тела запроса sort. Запросы, содержащие эти свойства, вернут ошибку.

Запросы поиска и получения теперь по умолчанию направляются на фрагменты с использованием адаптивной селекции реплик.

Подробности
Elasticsearch больше не будет отдавать предпочтение использованию фрагментов в одном месте (с одинаковыми значениями атрибутов осознанности) для обработки запросов _search и _get. Адаптивная селекция реплик (активирована по умолчанию в этой версии) будет направлять запросы более эффективно, используя время обслуживания предыдущих меж-узловых коммуникаций.

Воздействие
Нет необходимости в действиях.

Функции векторов, использующие (query, doc['field']), больше не поддерживаются.

Подробности
Функции векторов в форме function(query, doc['field']) были устаревшими в 7.6 и теперь удалены в 8.x. Вместо этого следует использовать форму function(query, 'field'). Например, cosineSimilarity(query, doc['field']) заменяется на cosineSimilarity(query, 'field').

Воздействие
Используйте форму function(query, 'field'). Прекратите использование формы function(query, doc['field']). Запросы, содержащие форму function(query, doc['field']), вернут ошибку.

Параметр тела запроса indices_boost API поиска больше не принимает значения объектов.

Подробности
Опция indices_boost в запросе поиска раньше принимала повышения как в виде объекта, так и в виде массива. Формат объекта устарел с 5.2 и теперь удален в 8.0.

Воздействие
Используйте только значения массивов в параметре indices_boost. Запросы, содержащие значение объекта в параметре indices_boost, вернут ошибку.

Параметр тела запроса use_field_mapping API поиска был удален.

Подробности
В 7.0 мы начали форматировать docvalue_fields по умолчанию, используя определение отображения каждого поля. Для облегчения перехода с 6.x мы добавили опцию форматирования use_field_mapping. Этот параметр был устаревшим в 7.0 и теперь удален в 8.0.

Воздействие
Прекратите использование параметра тела запроса use_field_mapping. Запросы, содержащие этот параметр, вернут ошибку.

Совместимость
При запросе rest-api-compatibility параметр use_field_mapping игнорируется.

Параметр тела и URL запроса поиска from API не может быть отрицательным.

Подробности
Запросы поиска раньше принимали -1 в качестве from в теле запроса и в URL, обрабатывая его как значение по умолчанию 0. Другие отрицательные значения уже отклонялись с ошибкой. Теперь мы также отклоняем -1 как недопустимое значение.

Воздействие
Измените любое использование -1 в качестве параметра from в теле запроса или параметрах URL, установив его в 0 или полностью опуская его. Запросы, содержащие отрицательные значения, вернут ошибку.

Диапазонные запросы к полям даты обрабатывают числовые значения всегда как миллисекунды с начала эпохи.

Подробности
Диапазонные запросы к полям даты раньше неправильно интерпретировали небольшие числа (например, четырехзначные числа, такие как 1000) как год, когда дополнительный формат не был установлен, но интерпретировали другие числовые значения как миллисекунды с начала эпохи. Сейчас мы обрабатываем все числовые значения в отсутствие конкретного параметра format как миллисекунды с начала эпохи. Если вы хотите запросить годы вместо этого, с отсутствующим параметром format, теперь вам нужно заключить входное значение в кавычки (например, "1984").

Воздействие
Если вы запрашиваете поля даты без указанного format, проверьте, подразумеваются ли значения в ваших запросах как миллисекунды с начала эпохи, и используйте числовое значение в этом случае. Если нет, используйте строковое значение, которое анализируется либо форматом даты, установленным для поля в отображениях, либо по умолчанию strict_date_optional_time.

Параметр запроса geo_bounding_box type был удален.

Подробности
Параметр запроса geo_bounding_box type был устарел в версии 7.14.0 и удален в 8.0.0. Этот параметр не оказывает никакого влияния на запрос.

Последствия
Прекратите использование параметра type. Запросы geo_bounding_box, содержащие этот параметр, вернут ошибку.

Запрос type был удален.

Подробности
Запрос type был удален. Типы отображения были удалены в версии 8.0.

Последствия
Прекратите использование запроса type. Запросы, содержащие запрос type, вернут ошибку.

Роль kibana_user переименована в kibana_admin.

Подробности
Пользователи, которым ранее была назначена роль kibana_user, должны вместо этого получить роль kibana_admin. Эта роль предоставляет тот же набор привилегий, что и kibana_user, но переименована для лучшего отражения её предназначения.

Последствия
Назначьте пользователям с ролью kibana_user роль kibana_admin. Прекратите использование роли kibana_user.

Для API моментальных снимков и SLM параметры indices больше не разрешают доступ к системным индексам или системным потокам данных.

Подробности
Для API моментальных снимков и SLM параметр indices больше не разрешает доступ к системным индексам или системным потокам данных. Состояния функций — это теперь единственный способ резервного копирования и восстановления системных индексов или системных потоков данных из моментального снимка.

Вы больше не можете использовать параметр indices для создания API политики SLM или создания API моментального снимка, чтобы включить системный индекс в моментальный снимок. Для резервного копирования системного индекса используйте параметры include_global_state и feature_states, чтобы включить соответствующее состояние функции. По умолчанию параметры include_global_state и feature_states включают все системные индексы.

Аналогично, вы больше не можете использовать параметр восстановления моментального снимка API indices для восстановления системного индекса из моментального снимка. Для восстановления системного индекса используйте параметры include_global_state и feature_states для восстановления соответствующего состояния функции. По умолчанию параметры include_global_state и feature_states не восстанавливают никакие системные индексы.

Последствия
Если вы ранее использовали параметр indices для резервного копирования или восстановления системных индексов, обновите свои политики SLM и приложение, чтобы использовать параметры include_global_state и feature_states вместо этого.

Политика SLM, которая явно указывает системный индекс в параметре indices, не сможет создать моментальные снимки. Аналогично, запрос API создания моментального снимка или восстановления моментального снимка API, который явно указывает системный индекс в параметре indices, потерпит неудачу и вернёт ошибку. Если значение indices включает шаблон подстановки (*), этот шаблон больше не будет соответствовать системным индексам.

Моментальные снимки сжимают файлы метаданных по умолчанию.

Подробности
Ранее значение по умолчанию для compress было false. Значение по умолчанию изменено на true.

Это изменение повлияет на новые хранилища и существующие, где compress=false не был явно указан.

Последствия
Обновите свою работу и приложения, приняв значение по умолчанию true для параметра compress.

Хранилища моментальных снимков S3 теперь по умолчанию используют схему доступа по типу DNS.

Подробности
Начиная с версии 7.4, хранилища моментальных снимков s3 больше не используют устаревшую по умолчанию схему доступа по типу пути. В версиях 7.0, 7.1, 7.2 и 7.3 хранилища моментальных снимков s3 всегда использовали схему доступа по типу пути. Это изменение для развертываний, поддерживающих только схему доступа по типу пути, но которые распознаются SDK AWS как поддерживающие схему доступа по типу DNS. Это изменение стало необходимым из-за объявления AWS о том, что схема доступа по типу пути устарела и не будет поддерживаться для ведер, созданных после 30 сентября 2020 года.

Последствия
Если ваше развертывание поддерживает только схему доступа по типу пути и затронуто этим изменением, вам необходимо настроить настройку клиента S3 path_style_access на true.

Запросы на восстановление больше не принимают настройки.

Подробности
В предыдущих версиях вы могли передать как settings, так и index_settings в теле запроса на восстановление моментального снимка, но значение settings игнорировалось. API восстановления моментального снимка теперь отклоняет запросы, содержащие значение settings.

Последствия
Прекратите использование параметра settings в запросе на восстановление моментального снимка. Запросы, содержащие эти параметры, вернут ошибку.

API статистики хранилища удален.

Подробности
API статистики хранилища удалён. Мы устарели этот экспериментальный API в 7.10.0.

Последствия
Используйте API измерения хранилищ вместо этого.

История наблюдателей теперь записывается в скрытый поток данных.

Подробности
В 8.x Elasticsearch записывает историю наблюдателя в скрытый поток данных .watcher-history-<index-template-version>. Ранее Elasticsearch записывал историю наблюдателя в скрытые индексы .watcher-history-<index-template-version>-<yyyy-MM-dd>.

Последствия
Обновите ваши запросы, чтобы указать на поток данных истории наблюдателя. Например, используйте шаблон подстановки .watcher-history-*. Запросы, которые конкретно нацелены на несуществующие индексы истории наблюдателя, могут вернуть ошибку.

Код HTTP-статуса изменен для API состояния кластера в случае таймаута сервера.

Подробности
API состояния кластера включает параметры ожидания выполнения определённых условий состояния. Если запрошенные условия не выполняются в течение таймаута, Elasticsearch вернёт стандартный ответ, включающий поле "timed_out": true. В более ранних версиях он также использовал HTTP-код ответа 408 Request timeout, если запрос превысил таймаут, и 200 OK в противном случае. Код ответа 408 Request timeout не подходит для этой ситуации, поэтому начиная с версии 8.0.0 Elasticsearch будет использовать код ответа 200 OK в обоих случаях.

Последствия
Для определения таймаута сервера проверьте поле timed_out в JSON-ответе.

Заголовок ответа Content-Type больше не указывает кодировку символов.

Подробности
Заголовок ответа Content-Type больше не указывает кодировку символов. Эта информация не требуется при передаче данных JSON, так как текст JSON всегда закодирован в Unicode, по умолчанию UTF-8.

Последствия
Некоторые приложения и утилиты, такие как Invoke-RestMethod PowerShell'a Invoke-RestMethod, должны получать информацию о кодировке символов, чтобы правильно отображать данные. Если ваше приложение или утилита полагается на информацию о кодировке символов в заголовке ответа Content-Type, символы UTF-8 в теле ответа будут отображены неправильно.

В качестве обходного решения для отображения не-ASCII-символов включите заголовок HTTP Accept в своих запросах, указав кодировку символов:

Accept: application/json; charset=utf-8

Изменения SQL JDBC

Драйвер JDBC возвращает объекты геометрии в виде строки well-known-text вместо объектов org.elasticsearch.geo.

Подробности
Для уменьшения зависимости драйвера JDBC от классов Elasticsearch, драйвер JDBC возвращает геометрические данные как строки в формате WKT (well-known text) вместо классов из org.elasticsearch.geometry. Пользователи могут выбрать желаемую библиотеку геометрии для преобразования строкового представления в полноценные объекты, такие как библиотека elasticsearch-geo (которая возвращала объект org.elasticsearch.geo как и раньше), jts или spatial4j.

Последствия
Перед обновлением замените классы org.elasticsearch.geo в драйвере JDBC Elasticsearch ResultSet#getObject или ResultSet#setObject на их представление WKT, просто вызвав методы toString или org.elasticsearch.geometry.utils.WellKnownText#toWKT/fromWKT.

Это изменение НЕ затрагивает пользователей, не использующих классы геометрии.

Изменения системных требований

Если вы используете Elasticsearch Service, пропустите этот раздел. Elasticsearch Service обрабатывает эти изменения за вас.

Несколько операционных систем EOL больше не поддерживаются.

Подробности
Следующие операционные системы достигли конца жизненного цикла и больше не поддерживаются Elasticsearch:

  • Amazon Linux
  • CentOS 6
  • Debian 8
  • openSUSE Leap 42
  • Oracle Enterprise Linux 6
  • Ubuntu 16.04

Мы также удалили поддержку SysV init. Ни одна из поддерживаемых операционных систем не использует процесс SysV init.

Подробности
Убедитесь, что ваши узлы используют поддерживаемую операционную систему. Запуск Elasticsearch на недопустимой операционной системе может привести к непредвиденным ошибкам или сбоям.

Требуется Java 17.

Подробности
Для запуска Elasticsearch и любых его командных инструментов теперь требуется Java 17 или более поздняя версия.

Последствия
Используйте Java 17 или более позднюю версию. Попытки запустить Elasticsearch 8.0 с более ранними версиями Java завершатся ошибкой.

Пока нет сертифицированного модуля безопасности FIPS для Java 17, который можно использовать при запуске Elasticsearch 8.0 в режиме FIPS 140-2. Если вы работаете в режиме FIPS 140-2, вам либо нужно запросить исключение у вашей организации безопасности для обновления до Elasticsearch 8.0, либо остаться на Elasticsearch 7.x до сертификации Java 17.

JAVA_HOME больше не поддерживается.

Подробности
JAVA_HOME больше не поддерживается для установки пути к JDK. Используйте вместо этого интегрированный JDK (предпочтительно) или установите ES_JAVA_HOME.

Последствия
Используйте интегрированный JDK (предпочтительно) или установите ES_JAVA_HOME. JAVA_HOME будет проигнорировано.

Изменения преобразований

Преобразования, созданные в версиях 7.4 или более ранних, необходимо обновить.

Подробности
В ранних бета-версиях преобразований информация о конфигурации содержалась в формате, который больше не поддерживается.

Последствия
Используйте API обновления преобразований для исправления ваших преобразований. Это обновление не влияет на индексы источника или назначения.

Устаревшие функции

Следующая функциональность устарела в Elasticsearch 8.0 и будет удалена в будущей версии. Хотя это не повлияет на ваши приложения сразу, мы настоятельно рекомендуем принять описанные меры для обновления своего кода после обновления до версии 8.0.

Чтобы узнать, используете ли вы устаревшую функциональность, включите регистрацию устаревания.

Устаревшие параметры кластера и узла

Мы больше не рекомендуем использовать временные настройки кластера.

Подробности
Мы больше не рекомендуем использовать временные настройки кластера. Используйте постоянные настройки кластера вместо этого. Если кластер становится нестабильным, временные настройки могут неожиданно очиститься, что приведет к нежелательной конфигурации кластера.

Последствия
Временные настройки кластера пока не устарели, но мы планируем устареть их в будущей версии. Шаги по миграции см. в Руководстве по миграции временных настроек.

Устаревшие командные инструменты

Если вы используете Elasticsearch Service, пропустите этот раздел. Elasticsearch Service обрабатывает эти изменения за вас.

Инструмент elasticsearch-setup-passwords устарел.

Подробности
Инструмент elasticsearch-setup-passwords устарел в версии 8.0. Чтобы вручную сбросить пароль для встроенных пользователей (включая пользователя elastic), используйте инструмент elasticsearch-reset-password, Elasticsearch API изменения паролей или функции управления пользователями в Kibana. elasticsearch-setup-passwords будет удалена в будущей версии.

Последствия
Пароли генерируются автоматически для пользователя elastic при первом запуске Elasticsearch. Если вы запустите elasticsearch-setup-passwords после запуска Elasticsearch, это завершится ошибкой, так как пароль пользователя elastic уже настроен.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/migrating-8.0.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API