迁移到 8.0
编辑迁移到 8.0
编辑本节讨论在将应用程序迁移到 Elasticsearch 8.0 时需要注意的更改。
另请参阅 8.17 版本的新增功能 和 发行说明。
重大更改
编辑Elasticsearch 8.0 中的以下更改可能会影响您的应用程序并阻止它们正常运行。在升级到 8.0 之前,请查看这些更改并采取所述步骤来减轻影响。
集群和节点设置更改
编辑表示对 Elasticsearch Service 的支持的 用户设置 的更改。
action.destructive_requires_name
现在默认为 true
。
详情
Elasticsearch 8.0.0 中,action.destructive_requires_name
设置的默认值从 false
更改为 true
。
以前,默认为 false
允许用户使用通配符模式来删除、关闭或更改索引上的索引块。为了防止意外删除与通配符模式匹配的索引,我们现在默认要求破坏性操作显式命名要修改的索引。
影响
要对破坏性操作使用通配符模式,请使用 https://elastic.ac.cn/guide/en/elasticsearch/reference/8.17/cluster-update-settings.html 集群设置 API,将 action.destructive_requires_name
设置为 false
。
您不能再在非冻结节点上设置 xpack.searchable.snapshot.shared_cache.size
。
详情
您不能再在没有 data_frozen
节点角色的节点上设置 xpack.searchable.snapshot.shared_cache.size
。此设置会为部分挂载索引的共享缓存保留磁盘空间。Elasticsearch 仅将部分挂载的索引分配给具有 data_frozen
角色的节点。
影响
从没有 data_frozen
角色的节点的 elasticsearch.yml
中删除 xpack.searchable.snapshot.shared_cache.size
。在非冻结节点上指定此设置会导致启动时出错。
indices.query.bool.max_clause_count
已弃用,并且不起作用。
详情
Elasticsearch 现在将动态设置查询中允许的最大子句数,使用基于搜索线程池大小和分配给 JVM 的堆大小的启发式方法。此限制的最小值为 1024,在大多数情况下会更大(例如,具有 30GB RAM 和 48 个 CPU 的节点的最大子句计数约为 27,000)。较大的堆会导致较高的值,而较大的线程池会导致较低的值。
影响
应尽可能避免使用包含大量子句的查询。如果您之前曾为了适应大量查询而提高了此设置,则可能需要增加 Elasticsearch 可用的内存量,或者减少搜索线程池的大小,以便为每个并发搜索提供更多内存。
在以前版本的 Lucene 中,您可以通过相互嵌套布尔查询来绕过此限制,但该限制现在基于整个查询中叶子查询的总数,这种解决方法将不再有帮助。
指定 indices.query.bool.max_clause_count
将不起作用,但会生成弃用警告。要避免这些警告,请在升级或节点重启期间从 elasticsearch.yml
中删除该设置。
indices.lifecycle.poll_interval
必须大于 1s
。
详情
将 indices.lifecycle.poll_interval
设置得太低可能会导致集群上的负载过大。轮询间隔现在必须至少为 1s
(一秒)。
影响
在 elasticsearch.yml
中或通过 集群更新设置 API 将 indices.lifecycle.poll_interval
设置为 1s
或更大。
在 elasticsearch.yml
中将 indices.lifecycle.poll_interval
设置为小于 1s
将导致启动时出错。集群更新设置 API 将 indices.lifecycle.poll_interval
设置为小于 1s
的请求将返回错误。
文件和本机领域现在已启用,除非显式禁用。
详情
文件和本机领域现在已启用,除非显式禁用。如果显式禁用,则文件和本机领域始终保持禁用状态。
以前,文件和本机领域具有以下隐式行为
- 如果未配置文件和本机领域,则在配置任何其他领域时,它们会被隐式禁用。
- 如果没有其他领域可用(因为领域未配置、许可证不允许或显式禁用),则会启用文件和本机领域,即使它们被显式禁用也是如此。
影响
要显式禁用文件或本机领域,请在 elasticsearch.yml
的 xpack.security.authc.realms
命名空间下,将相应的 file.<realm-name>.enabled
或 native.<realm-name>.enabled
设置为 false
。
以下配置示例禁用本机领域和文件领域。
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
设置已删除。加入尝试不再超时。
影响
从 elasticsearch.yml
中删除 cluster.join.timeout
。
discovery.zen
设置已删除。
详情
不再支持 discovery.zen
命名空间下的所有设置。它们仅在 7.x 中出于 BWC 原因而存在。这包括
-
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
影响
从 elasticsearch.yml
中删除 discovery.zen
设置。指定这些设置会导致启动时出错。
http.content_type.required
已删除。
详情http.content_type.required
设置在 Elasticsearch 6.0 中已弃用,并在 Elasticsearch 8.0 中已删除。该设置在 Elasticsearch 5.3 中引入,旨在让用户为 Elasticsearch 6.0 做准备,因为该版本中已删除了 HTTP 请求的内容类型自动检测。
影响
从 elasticsearch.yml
中删除 http.content_type.required
设置。指定此设置会导致启动时出错。
http.tcp_no_delay
已删除。
详情http.tcp_no_delay
设置在 7.x 中已弃用,并在 8.0 中已删除。请改用 http.tcp.no_delay
。
影响
将 http.tcp_no_delay
设置替换为 http.tcp.no_delay
。在 elasticsearch.yml
中指定 http.tcp_no_delay
会导致启动时出错。
network.tcp.connect_timeout
已删除。
详情network.tcp.connect_timeout
设置在 7.x 中已弃用,并在 8.0 中已删除。此设置是 transport.connect_timeout
的回退设置。
影响
删除 network.tcp.connect_timeout
设置。使用 transport.connect_timeout
设置来更改客户端连接的默认连接超时。在 elasticsearch.yml
中指定 network.tcp.connect_timeout
会导致启动时出错。
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 版本以来没有任何影响,并且不再允许。
影响
从 elasticsearch.yml
中删除 xpack.security.authc.accept_default_password
设置。指定此设置会导致启动时出错。
roles.index.cache.*
设置已删除。
详情xpack.security.authz.store.roles.index.cache.max_size
和 xpack.security.authz.store.roles.index.cache.ttl
设置已删除。自 Elasticsearch 5.2 版本以来,这些设置一直是冗余且已弃用的。
影响
从 elasticsearch.yml
中删除 xpack.security.authz.store.roles.index.cache.max_size
和 xpack.security.authz.store.roles.index.cache.ttl
设置。指定这些设置会导致启动时出错。
transport.profiles.*.xpack.security.type
设置已删除。
详情
不再支持 transport.profiles.*.xpack.security.type
设置。传输客户端已删除,所有客户端流量现在都使用 HTTP 传输。应删除使用此设置的传输配置文件。
影响
从 elasticsearch.yml
中删除 transport.profiles.*.xpack.security.type
设置。在传输配置文件中指定此设置会导致启动时出错。
SAML realm 设置中的 nameid_format
不再具有默认值。
详情
在 SAML 中,身份提供商 (IdP) 可以显式配置为以特定格式发布 NameID
,或者配置为尝试符合服务提供商 (SP) 的要求。SP 在 SAML 身份验证请求的 NameIDPolicy
元素中声明其要求。在 Elasticsearch 中,nameid_format
SAML realm 设置控制 NameIDPolicy
的值。
以前,nameid_format
的默认值为 urn:oasis:names:tc:SAML:2.0:nameid-format:transient
。此设置创建的身份验证请求要求 IdP 以 transient
格式发布 NameID
。
默认值已被删除,这意味着 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
设置。
详情
现在,在没有配置 xpack.security.transport.ssl.enabled
的情况下配置 xpack.security.transport.ssl
的任何 SSL 设置都会报错。
影响
如果使用其他 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.http.ssl.enabled
设置来配置 xpack.security.http.ssl
设置。
详情
现在,在没有配置 xpack.security.http.ssl.enabled
的情况下配置 xpack.security.http.ssl
的任何 SSL 设置都会报错。
影响
如果使用其他 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.transport.ssl
证书和密钥才能为传输接口启用 SSL。
详情
现在,在没有通过使用 xpack.security.transport.ssl.keystore.path
设置或 xpack.security.transport.ssl.certificate
和 xpack.security.transport.ssl.key
设置配置证书和密钥的情况下为传输接口启用 SSL 会报错。
影响
如果 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
证书和密钥才能为 HTTP 服务器启用 SSL。
详情
现在,在没有通过使用 xpack.security.http.ssl.keystore.path
设置或 xpack.security.http.ssl.certificate
和 xpack.security.http.ssl.key
设置配置证书和密钥的情况下为 HTTP(Rest)服务器启用 SSL 会报错。
影响
如果 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" 作为有效类型。这适用于 Elasticsearch 中的所有 SSL 设置,包括
-
xpack.security.http.keystore.type
-
xpack.security.transport.keystore.type
-
xpack.security.http.truststore.type
-
xpack.security.transport.truststore.type
以及安全 realm、watcher 和监控的 SSL 设置。
将 PKCS#11 密钥库或信任库用作 JRE 的默认存储不受影响。
影响
如果您的 elasticsearch.yml
文件中配置了 PKCS#11 密钥库,则必须删除该配置并切换到受支持的密钥库类型,或将您的 PKCS#11 密钥库配置为 JRE 默认存储。
kibana
用户已被 kibana_system
取代。
详情kibana
用户在历史上用于向 Elasticsearch 验证 Kibana。此用户的名称令人困惑,并且经常被错误地用于登录 Kibana。为了减少混淆并更好地与其他内置系统帐户保持一致,该用户已重命名为 kibana_system
。
影响
将任何对 kibana
用户的使用替换为 kibana_system
用户。在 kibana.yml
中指定 kibana
用户将在启动时导致错误。
如果您的 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
设置已在 Elasticsearch 的 7.4.0 版本中弃用,并在 8.0.0 版本中删除。请改用 node.pidfile
。
影响
使用 node.pidfile
设置。停止使用 pidfile
设置。在 elasticsearch.yml
中指定 pidfile
设置将在启动时导致错误。
processors
设置已被 node.processors
取代。
详情
为了确保所有设置都位于正确的命名空间中,processors
设置已在 Elasticsearch 的 7.4.0 版本中弃用,并在 8.0.0 版本中删除。请改用 node.processors
。
影响
使用 node.processors
设置。停止使用 processors
设置。在 elasticsearch.yml
中指定 processors
设置将在启动时导致错误。
node.processors
设置不再能超过可用处理器的数量。
详情
以前,可以将用于设置线程池默认大小的处理器数量设置为多于可用处理器的数量。由于这会导致更多的上下文切换和更多的线程,但没有增加调度这些额外线程的物理 CPU 数量,因此 node.processors
设置现在受可用处理器数量的限制。
影响
如果指定了,请确保 node.processors
设置的值不超过可用处理器的数量。在 elasticsearch.yml
中将 node.processors
值设置为大于可用处理器的数量将在启动时导致错误。
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
设置。在 elasticsearch.yml
中指定 cluster.remote.connect
设置将在启动时导致错误。
node.local_storage
设置已被删除。
详情
在 Elasticsearch 7.8.0 中,node.local_storage
设置已被弃用,并且从 Elasticsearch 8.0.0 开始,所有节点都将需要本地存储。因此,node.local_storage
设置已被删除。
影响
停止使用 node.local_storage
设置。在 elasticsearch.yml
中指定此设置将在启动时导致错误。
用于 HTTP 监控的 auth.password
设置已被删除。
详情
在 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
设置。在 elasticsearch.yml
中指定 xpack.monitoring.exporters.<exporterName>.auth.password
设置将在启动时导致错误。
用于禁用基本许可证功能的设置已被删除。
详情
以下设置已在 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
结尾的集群和索引级设置已被删除。应改为使用 分层首选项设置 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 配置中指定任何这些集群设置将在启动时导致错误。任何使用这些设置的索引都将在加载索引元数据时存档这些设置(并且它们将不起作用)。
单数据节点水印设置已弃用,现在只接受 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
设置。
已删除 listener
线程池。
详情
以前,传输客户端使用线程池来确保侦听器不会在网络线程上被回调。传输客户端已在 8.0 中删除,并且不再需要该线程池。
影响
从任何节点的 elasticsearch.yml
中删除 listener
线程池设置。在 elasticsearch.yml
中指定 listener
线程池设置将在启动时导致错误。
已删除 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
。此配置意味着原始索引数据的传播将在节点之间进行压缩。
影响
沿着索引路径,节点之间的传输将减少。在某些情况下,CPU 使用率可能会增加。
传输压缩默认为 lz4。
详情
在 8.0 之前,transport.compression_scheme
设置默认为 deflate
。从 8.0 开始,transport.compress_scheme
默认为 lz4
。
在 8.0 之前,当显式配置 cluster.remote.<cluster_alias>.transport.compress
时,cluster.remote.<cluster_alias>.transport.compression_scheme
设置默认为 deflate
。从 8.0 开始,cluster.remote.<cluster_alias>.transport.compression_scheme
将默认回退到 transport.compression_scheme
。
影响
此配置意味着传输压缩将产生较低的压缩率,以换取较低的 CPU 负载。
已删除 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 收集的监控数据的保留设置,请直接更新 .monitoring-8-ilm-policy
ILM 策略。
xpack.monitoring.history.duration
设置将仅适用于使用(旧版)内部收集编写的监控索引,而不适用于由 metricbeat 或 agent 创建的索引。
影响
升级后,请确保 .monitoring-8-ilm-policy
ILM 策略与您所需的保留设置一致。
如果您仅使用 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 或关联功能的 Elasticsearch API 来管理您要访问的数据。
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
将不起作用,但会生成弃用警告。
为避免这些弃用警告,请停止使用该设置。创建新索引时不要指定该设置,并从索引和组件模板中删除该设置。
要从现有数据流或索引中删除该设置,请使用更新索引设置 API 将该设置的值指定为 null
。
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 滚动操作之类的自动化操作。
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
设置已删除。
详情
Translog 保留设置 index.translog.retention.age
和 index.translog.retention.size
在 7.4 中实际上被忽略,在 7.7 中被弃用,并在 8.0 中被删除,取而代之的是软删除。
影响
请停止使用 index.translog.retention.age
和 index.translog.retention.size
索引设置。包含这些设置的请求将返回错误。
Java API 更改
编辑在 Java 高级 REST 客户端中,indexlifecycle
包已重命名为 ilm
。
详情
在高级 REST 客户端中,indexlifecycle
包已重命名为 ilm
,以匹配 Elasticsearch 代码中的包重命名。
影响
更新您的工作流程和应用程序,以使用 ilm
包代替 indexlifecycle
。
Fuzziness
的更改。
详情
要创建 Fuzziness
实例,请使用 fromString
和 fromEdits
方法,而不是以前接受字符串和数值的 build
方法。查询生成器上的几个模糊性设置器(例如,MatchQueryBuilder#fuzziness)现在仅接受 Fuzziness
实例,而不是 Object。
过去,Fuzziness 在解析任意数值时非常宽松,会默默地将其截断为三个允许的编辑距离 0、1 或 2 之一。现在已删除此宽松性,并且当尝试使用另一个值构造实例时(例如,像 1.3 这样的浮点数过去会被接受但截断为 1),该类将引发错误。
影响
使用可用的常量(例如,Fuzziness.ONE
,Fuzziness.AUTO
)或使用上述工厂方法构建您自己的实例。仅使用允许的 Fuzziness
值。
Repository
的更改。
详情
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 中的 +
将由所有 REST API 功能编码为 %2B
。以前的版本将 +
处理为单个空格。在这些以前的版本中,如果您的应用程序需要将 +
处理为单个空格,则可以通过将系统属性 es.rest.url_plus_as_space
设置为 true
来恢复旧的行为。请注意,此行为已被弃用,并且在版本 8 中将不再支持将此系统属性设置为 true
。
影响
更新您的应用程序或工作流程,以假定 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 的纯文本日志,请将其更新为使用新的 ECS JSON 日志。
审计日志按大小进行滚动和存档。
详情
除了现有的每日滚动之外,安全审计日志现在也按磁盘大小限制进行滚动。此外,滚动后的日志还会进行 gzip 压缩。
影响
滚动后的审计日志文件的名称(但不是当前日志的名称)已更改。如果您设置了自动工具来使用这些文件,则必须将它们配置为使用新名称,并且可能需要考虑 gzip
存档而不是纯文本。Elasticsearch 的 Docker 构建不受影响,因为它在 stdout
上记录日志,而此处不执行滚动。
映射更改
编辑不支持在 Elasticsearch 6.x 及更早版本中创建的索引。
详情
Elasticsearch 8.0 可以读取在 7.0 或更高版本中创建的索引。如果存在在 7.0 之前的 Elasticsearch 版本中创建的索引,则 Elasticsearch 8.0 节点将不会启动。
影响
如果需要在 Elasticsearch 8.x 中继续使用,请使用 Elasticsearch 7.x 重新索引在 Elasticsearch 6.x 或更早版本中创建的索引。
不支持在 Elasticsearch 6.x 及更早版本中创建的封闭索引。
详情
在早期版本中,即使节点具有在之前的主要版本之前创建的索引中的数据,只要这些索引是封闭的,节点也会启动。现在,Elasticsearch 确保它在启动时与每个索引(打开或关闭)兼容。
影响
如果需要在 Elasticsearch 8.x 中继续使用,请使用 Elasticsearch 7.x 重新索引在 Elasticsearch 6.x 或更早版本中创建的封闭索引。
每个字段的最大完成上下文数现在为 10。
详情
单个完成字段中的完成上下文数量已限制为 10 个。
影响
在一个完成字段中使用最多 10 个完成上下文。指定超过 10 个完成上下文将返回错误。
不再支持多字段中的多字段。
详情
以前,可以在多字段中定义多字段。在 7.3 中已弃用定义链接的多字段,现在不再支持。
影响
要迁移映射,应删除在 fields
块中出现的所有 fields
实例,可以通过将链接的 fields
块展平为单个级别,或者在适当的情况下切换到 copy_to
来删除。
_field_names
元数据字段的 enabled
参数已删除。
详情
此设置在 7.5 中已弃用,并且在新索引上不再支持。旧索引的映射将继续工作,但会发出弃用警告。
影响
应从模板和映射中删除 _field_names
的 enabled
设置。禁用 _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
)。
默认 Maxmind geoip 数据库已被删除。
详情
默认情况下随 Elasticsearch 一起提供的默认 Maxmind geoip 数据库已被删除。这些数据库已过时且陈旧,使用这些数据库可能会导致不正确的 geoip 查找。
从 7.13 版本开始,默认情况下,如果在配置目录中未指定数据库,或者在 geoip 下载器下载 geoip 数据库之前,将使用这些预先打包的 geoip 数据库。当 geoip 数据库下载器完成下载新数据库后,将不再使用这些预先打包的数据库。
影响
如果禁用了 geoip 下载器,并且每个 ingest 节点的配置目录中未提供 geoip 数据库,则 geoip 处理器将不再执行 geoip 查找,并将使用请求的数据库不再可用的事实标记这些文档。
在集群启动后,geoip 下载器完成下载最新的数据库之前,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)
→ DateTimeFormatter -
toString(String, Locale)
→ 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
CLI 工具已更改为容忍尝试安装和删除这些插件,以避免破坏任何现有的自动化。将来,尝试安装这些插件将是一个错误。
具体来说,如果您尝试安装上述任何插件,elasticsearch-plugin
CLI 工具将不会失败,而是会打印警告并跳过这些插件。如果已安装这些插件中的任何一个,例如因为您在运行旧版本的 Elasticsearch 时安装了它们,那么您仍然可以使用 elasticsearch-plugin
删除它们。如果它们未安装,则尝试删除它们将成功但会打印警告。
如果您使用 Docker 运行 Elasticsearch 并且您使用 配置文件 管理插件,那么在您升级后 Elasticsearch 第一次启动时,它将删除已安装的上述插件。如果您的配置文件中指定了这些插件中的任何一个,Elasticsearch 将忽略它们并发出警告日志消息。
第三方插件不再能够拦截 REST 请求 (RestHandlerWrapper
)
详情
在以前版本的 Elasticsearch 中,第三方插件可以实现 getRestHandlerWrapper
方法来拦截对节点的所有 REST 请求。此功能的一个常见用途是实现自定义安全插件以替换内置安全功能。此扩展点不再适用于第三方插件。
影响
一些旨在与早期版本的 Elasticsearch 配合使用的第三方插件可能与 Elasticsearch 8.0 或更高版本不兼容。
如果您依赖任何非 Elastic 生成和支持的插件,请与插件作者核实并确保该插件可用于您目标版本的 Elasticsearch,然后再进行升级。
REST API 更改
编辑包含 _xpack
的 REST API 端点已被删除。
详情
在 7.0 版本中,我们弃用了路径中包含 _xpack
的 REST 端点。这些端点现在已在 8.0 版本中删除。每个已被弃用和删除的端点都已替换为不包含 _xpack
的新端点。例如,/{index}/_xpack/graph/_explore
被 /{index}/_graph/explore
替换。
影响
使用替换的 REST API 端点。提交到 _xpack
API 端点的请求将返回错误。
兼容性
当rest-api-compatibility被请求时,任何包含`_xpack`前缀的请求都会被重新路由到相应的 URL,而不包含 _xpack
前缀。
包含映射类型的 REST API 端点已被删除。
详情
映射类型已被删除。包含映射类型的 API 端点也已被删除。请改用无类型端点。
API | 类型化 API 端点 | 无类型 API 端点 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
影响
更新您的应用程序以使用无类型的 REST API 端点。对包含映射类型的端点的请求将返回错误。
兼容性
当 rest-api-compatibility 被请求时,如果请求包含自定义映射类型,则会被忽略。该请求会被重定向到对应的无类型 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 |
|||||||||||||||||||||
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 |
对于 EQL 搜索 API,如果本地和远程集群的版本早于 7.17.7(含)或早于 8.5.1(含),则它们必须使用相同的 Elasticsearch 版本。
例如,本地 8.0 集群可以搜索远程 7.17 或任何远程 8.x 集群。但是,不支持从本地 8.0 集群搜索到远程 7.16 或 6.8 集群。
以前,我们还支持在运行以下版本的远程集群上进行搜索:
- 本地集群主要版本的任何次要版本。
- 上一个主要版本的最后一个次要版本。
但是,此类搜索可能会导致未定义的行为。
影响
如果您仅在运行相同或更新版本的远程集群上运行跨集群搜索,则无需进行任何更改。
如果您之前搜索过运行早期版本的 Elasticsearch 的远程集群,请参阅 确保跨集群搜索支持以获取推荐的解决方案。
使用不支持的配置进行跨集群搜索可能仍然有效。但是,此类搜索未经过 Elastic 测试,并且其行为不保证。
terms
聚合不再支持 _term
排序键。
详情terms
聚合不再支持 order
值中的 _term
键。要按其词条对存储桶进行排序,请改用 _key
。
影响
停止使用 _term
排序键。包含 _term
排序键的请求将返回错误。
兼容性
当 rest-api-compatibility 被请求时,_term
排序将被忽略,而改用 key
。
date_histogram
聚合不再支持 _time
排序键。
详情date_histogram
聚合不再支持 order
值中的 _time
键。要按其键对存储桶进行排序,请改用 _key
。
影响
停止使用 _time
排序键。包含 _time
排序键的请求将返回错误。
兼容性
当 rest-api-compatibility 被请求时,_time
排序将被忽略,而改用 _key
。
moving_avg
聚合已被删除。
详情moving_avg
聚合在 6.4 中已弃用,并且已被删除。要计算移动平均值,请改用 moving_fn
聚合。
影响
停止使用 moving_avg
聚合。包含 moving_avg
聚合的请求将返回错误。
percentiles
聚合的 percents
参数不再支持重复值。
详情
如果您使用 percentiles
聚合指定 percents
参数,则其值必须唯一。否则,会发生异常。
影响
在 percentiles
聚合的 percents
参数中使用唯一值。在 percents
参数中包含重复值的请求将返回错误。
date_histogram
聚合的 interval
参数不再有效。
详情
现在,为 date_histogram
聚合或 https://elastic.ac.cn/guide/en/elasticsearch/reference/8.17/search-aggregations-bucket-composite-aggregation.html#_date_histogram[composite date_histogram
源]指定 interval
参数是错误的。相反,请根据需要使用 calendar_interval
或 fixed_interval
。
影响
在 date_histogram
聚合或 date_histogram
复合源中使用 interval
参数现在将产生错误。请改用更具体的 fixed_interval
或 calendar_interval
参数。
兼容性
当 rest-api-compatibility 被请求时,interval
参数将调整为固定或日历间隔。
nGram
和 edgeNGram
令牌过滤器名称已被删除。
详情
自 6.4 版本起已弃用的 nGram
和 edgeNGram
令牌过滤器名称已被删除。自 7.0 版本起,两个令牌过滤器只能通过其备用名称 ngram
和 edge_ngram
使用。
影响
使用等效的 ngram
和 edge_ngram
令牌过滤器。包含 nGram
和 edgeNGram
令牌过滤器名称的请求将返回错误。
nGram
和 edgeNGram
分词器名称已被删除。
详情nGram
和 edgeNGram
分词器名称已在 7.6 中弃用,并且不再支持新索引。在 7.6 之后创建的索引的映射将继续工作,但会发出弃用警告。对于新索引和索引模板,应将分词器名称更改为完全等效的 ngram
或 edge_ngram
名称。
影响
使用 ngram
和 edge_ngram
分词器。使用 nGram
和 edgeNGram
分词器名称创建新索引的请求将返回错误。
在日志和诊断 API 中,in_flight_requests
统计信息已重命名为 inflight_requests
。
详情
日志输出和诊断 API(例如节点统计 API)中正在进行的请求熔断器的名称从 in_flight_requests
更改为 inflight_requests
,以使其与相应设置的名称一致。
影响
更新您的工作流程和应用程序,以使用 inflight_requests
统计信息代替 in_flight_requests
。
投票配置排除 API 端点已更改。
详情
已删除 POST /_cluster/voting_config_exclusions/{node_filter}
API,取而代之的是 POST /_cluster/voting_config_exclusions?node_names=...
和 POST /_cluster/voting_config_exclusions?node_ids=...
,这两个 API 允许您指定要排除的节点的名称或 ID。
影响
使用 POST /_cluster/voting_config_exclusions?node_ids=...
并指定要排除的节点,而不是使用节点过滤器。提交到 /_cluster/voting_config_exclusions/{node_filter}
端点的请求将返回错误。
EQL wildcard
函数已被删除。
详情wildcard
函数在 Elasticsearch 7.13.0 中已弃用,并且已被删除。
影响
请改用 like
或 regex
关键字。
ILM freeze
操作现在是空操作。
详情
ILM freeze 操作现在是空操作,并且不对索引执行任何操作,因为 freeze API 端点已在 8.0 中删除。
影响
请更新您的 ILM 策略,从 cold
阶段中删除 freeze
操作。
对 ILM 策略进行额外验证。
详情
创建或更新 ILM 策略现在要求任何引用的快照存储库和 SLM 策略都必须存在。
影响
请更新您的代码或配置管理,以确保在创建任何引用它们的策略之前创建存储库和 SLM 策略。
已弃用的 _upgrade
API 已被删除。
详情
以前,_upgrade
API 将索引从之前的major版本升级到当前版本。现在应该使用 _reindex
API 来实现此目的。
影响
对旧的 _upgrade
API 发出的请求将返回错误。
已弃用的冻结索引 API 已被删除。
详情
冻结索引 API (POST /<index>/_freeze
) 已被删除。堆内存使用方面的改进消除了冻结索引的原因。您仍然可以使用 解冻索引 API 解冻现有冻结索引。对于某些用例,冻结层可能是冻结索引的合适替代方案。有关更多信息,请参阅数据层。
影响
对旧的冻结索引 API 发出的请求将返回错误。
强制合并 API 的 max_num_segments
和 only_expunge_deletes
参数不能在同一请求中同时指定。
详情
以前,强制合并 API 允许同时将参数 only_expunge_deletes
和 max_num_segments
设置为非默认值。但是,当 only_expunge_deletes
设置为 true
时,max_num_segments
会被静默忽略,从而给人一种它已应用的错误印象。
影响
使用 强制合并 API 时,不要同时为 max_num_segments
和 only_expunge_deletes
参数指定值。包含这两个参数值的请求将返回错误。
创建或更新索引模板 API 的 template
参数已被删除。
详情
在 6.0 中,我们弃用了创建或更新索引模板请求中的 template
参数,转而使用 index_patterns
。现在,8.0 中已删除对 template
参数的支持。
影响
请使用创建或更新索引模板 API的 index_patterns
参数。包含 template
参数的请求将返回错误。
兼容性
当 请求rest-api-compatibility 时,template
参数将映射到 index_patterns
。
同步刷新已删除。
详情
同步刷新在 7.6 中已弃用,并在 8.0 中删除。请改用常规刷新,因为它具有与 7.6 及更高版本中的同步刷新相同的效果。
影响
请使用 刷新 API。对 /<index>/flush/synced
或 /flush/synced
端点的请求将返回错误。
兼容性
当 请求rest-api-compatibility 时,对同步刷新的请求将路由到等效的非同步刷新 URL。
关闭索引 API 上 ?wait_for_active_shards
参数的默认值已更改。
详情
在早期版本中关闭索引时,默认情况下,Elasticsearch 不会等待关闭索引的分片被正确分配后再返回。从 8.0 版本开始,默认行为是等待分片根据 index.write.wait_for_active_shards
索引设置进行分配。
影响
接受新行为,或者在需要时指定 ?wait_for_active_shards=0
以保留旧行为。
索引统计信息 API 的 types
查询参数已被删除。
详情
索引统计信息 API 的 types
查询参数已被删除。以前,您可以将 types
与 indexing
查询参数结合使用,以返回特定映射类型的索引统计信息。映射类型已在 8.0 中删除。
影响
停止使用 types
查询参数。包含该参数的请求将返回错误。
兼容性
当 请求rest-api-compatibility 时,将忽略 types
查询参数,并返回整个索引的统计信息。
user_agent
摄取处理器的 ecs
参数不起作用。
详情
在 7.2 中,我们弃用了 user_agent
摄取处理器的 ecs
参数。在 8.x 中,无论 ecs
值如何,user_agent
摄取处理器都只会返回 Elastic Common Schema (ECS) 字段。
影响
要避免弃用警告,请从您的摄取管道中删除该参数。如果管道指定了 ecs
值,则该值将被忽略。
include_type_name
查询参数已被删除。
详情
已从索引创建、索引模板和映射 API 中删除了 include_type_name
查询参数。以前,您可以将 include_type_name
设置为 true
,以指示请求和响应应包含映射类型名称。映射类型已在 8.x 中删除。
影响
停止使用 include_type_name
查询参数。包含该参数的请求将返回错误。
兼容性
当 请求rest-api-compatibility 时,将忽略 include_type_name
查询参数,并删除请求中的任何自定义映射类型。
从远程重新索引现在会重新编码 URL 编码的索引名称。
详情
从远程重新索引以前允许使用 URL 编码的索引名称,并且在为远程主机生成搜索请求时不会重新编码它们。此宽松政策已被删除,以便在重新索引生成远程搜索请求时,所有索引名称都将被正确编码。
影响
为从远程重新索引请求指定未编码的索引名称。
在重新索引、按查询删除和按查询更新 API 中,size
参数已重命名。
详情
以前,_reindex
请求的主体中有两个不同的 size 规范
- 外层,确定要处理的最大文档数
- 在
source
元素内部,确定滚动/批处理大小。
外层 size
参数现在已重命名为 max_docs
,以避免混淆并阐明其语义。
同样,为了保持 3 个接口的一致性,_delete_by_query
和 _update_by_query
的 size
参数已重命名为 max_docs
。
影响
请使用替换参数。包含 size
参数的请求将返回错误。
兼容性
当 请求rest-api-compatibility 时,size
参数将映射到 max_docs
参数。
按查询更新 API 现在会拒绝不支持的 script
字段。
详情
如果按查询更新 API 请求在 script
对象中包含不支持的字段,则现在将返回错误。以前,API 会静默忽略这些不支持的字段。
影响
为了避免错误,请从 script
对象中删除不支持的字段。
cat 节点 API 的 local
查询参数已被删除。
详情GET _cat/nodes
API 的 ?local
参数在 7.x 中已弃用,在 8.0 中被拒绝。此参数导致 API 使用本地群集状态来确定 API 返回的节点,而不是来自主节点的群集状态,但此 API 会从每个选定的节点请求信息,而不管 ?local
参数,这意味着此 API 不会以完全节点本地的方式运行。
影响
停止使用 ?local
查询参数。cat 节点 API 包含此参数的请求将返回错误。
cat 分片 API 的 local
查询参数已被删除。
详情GET _cat/shards
API 的 ?local
参数在 7.x 中已弃用,在 8.0 中被拒绝。此参数导致 API 使用本地群集状态来确定 API 返回的节点,而不是来自主节点的群集状态,但此 API 会从每个选定的节点请求信息,而不管 ?local
参数,这意味着此 API 不会以完全节点本地的方式运行。
影响
停止使用 ?local
查询参数。cat 分片 API 包含此参数的请求将返回错误。
cat 索引 API 的 local
查询参数已被删除。
详情
在 7.x 版本中,GET _cat/indices
API 的 ?local
参数已被弃用,在 8.0 版本中被拒绝。此参数曾导致 API 使用本地集群状态来确定 API 返回的节点,而不是使用主节点的集群状态。但此 API 无论是否使用 ?local
参数,都会从每个选定的节点请求信息,这意味着此 API 并非以完全节点本地的方式运行。
影响
请停止使用 ?local
查询参数。包含此参数的 cat indices API 请求将返回错误。
get field mapping API 的 local
查询参数已被删除。
详情
get field mapping API 的 local
参数在 7.8 版本中已弃用,并在 8.0 版本中被删除。此参数是一个空操作,字段映射始终在本地检索。
影响
请停止使用 local
查询参数。包含此参数的 get field mapping API 请求将返回错误。
向 jobs API 发送数据的 Post 方法已弃用。
详情
从 7.11.0 版本开始,机器学习 post data to jobs API 已弃用,并将在未来的主要版本中删除。
影响
请改用 datafeeds。
Update datafeeds API 的 job_id
属性已被删除。
详情
在 7.3.0 版本中,更新数据馈送中的 job_id
的功能已被弃用,并在 8.0 版本中被删除。
影响
无法在异常检测作业之间移动数据馈送。
当存储库正在使用时,创建和删除存储库 API 会返回 409
状态码,而不是 500
。
详情
当请求尝试修改正在使用的现有存储库时,创建或更新快照存储库 API 和 删除快照存储库 API 会返回 409
状态码,而不是状态码 500
。
影响
请更新处理存储库创建和删除的客户端代码以反映此更改。
机器学习 API 中已删除 allow_no_datafeeds
属性。
详情
在 7.10.0 版本中,allow_no_datafeeds
属性在 cat datafeeds、get datafeeds、get datafeed statistics 和 stop datafeeds API 中被弃用。
影响
请改用 allow_no_match
。
机器学习 API 中已删除 allow_no_jobs
属性。
详情
在 7.10.0 版本中,allow_no_jobs
属性在 cat anomaly detectors、close anomaly detection jobs、get anomaly detection jobs、get anomaly detection job statistics 和 get overall buckets API 中被弃用。
影响
请改用 allow_no_match
。
如果作业已启动,StartRollupJob 端点现在会返回成功状态。
详情
以前,尝试启动已启动的汇总作业会导致 500 InternalServerError: Cannot start task for Rollup Job [job] because state was [STARTED]
异常。
现在,尝试启动已启动的作业只会返回成功的 200 OK: started
响应。
影响
请更新您的工作流程和应用程序,假设对启动汇总作业的尝试返回 200 状态表示该作业处于活动启动状态。该请求本身可能启动了作业,或者它之前正在运行,因此该请求没有影响。
存储的脚本不再支持空脚本或搜索模板。
详情
创建或更新存储的脚本 API 的 source
参数不能为空。
影响
在升级之前,请使用 删除存储的脚本 API 删除所有空的存储脚本或搜索模板。在 8.0 版本中,Elasticsearch 将从集群状态中删除任何空的存储脚本或空的搜索模板。使用空的 source
创建存储脚本或搜索模板的请求将返回错误。
创建或更新存储的脚本 API 的 code
参数已被删除。
详情
创建或更新存储的脚本 API 的 code
参数已被删除。请改用 source
参数。
影响
请停止使用 code
参数。包含该参数的请求将返回错误。
不再支持在 _type
字段上进行搜索。
详情
在 8.x 版本中,_type
元数据字段已被删除。Elasticsearch 现在将对 _type
字段的搜索视为对不存在的字段的搜索。对不存在的字段的搜索不匹配任何文档,无论查询字符串如何。
在 7.x 版本中,在 _type
字段中搜索 _doc
将匹配与 match_all
查询相同的文档。
影响
请从您的搜索请求和搜索模板中删除在 _type
字段上的查询。包含这些查询的搜索可能不会返回任何结果。
多搜索 API 现在将文本文件中的空第一行解析为操作元数据。
详情
当您提供文本文件作为请求正文时,例如在使用 curl 的 --data-binary
标志时,多搜索 API 现在将空的第一行解析为空的操作元数据。
该 API 不再支持包含以下内容的文本文件:
- 空的第一行,后跟仅包含
{}
的一行。 - 空的第一行,后跟另一个空行。
影响
不要向多搜索 API 提供不支持的文本文件。包含不支持文件的请求将返回错误。
已删除 unmapped_type: string
排序选项。
详情
搜索请求不再支持 unmapped_type: string
排序选项。请改用 unmapped_type: keyword
将未映射的字段视为具有 keyword
字段类型,但忽略其值进行排序。
影响
请停止使用 unmapped_type: string
。包含 unmapped_type: string
排序选项的搜索请求将返回分片失败。
默认情况下,不允许对 _id
进行聚合和排序。
详情
以前,可以通过加载名为 fielddata 的昂贵数据结构来对内置的 _id
字段进行聚合和排序。这在 7.6 版本中已弃用,现在在 8.0 版本中默认不允许。
影响
应避免对 _id
进行聚合和排序。作为替代方案,可以将 _id
字段的内容复制到另一个启用了 docvalues 的字段中(请注意,这不适用于自动生成的 ID)。
已删除 common
查询。
详情
在 7.x 版本中已弃用的 common
查询在 8.0 版本中已删除。如果未跟踪命中总数,则可以通过 match
查询实现相同的功能。
影响
请停止使用 common
查询。包含 common
查询的搜索请求将返回错误。
已从 match
和 multi_match
查询中删除 cutoff_frequency
参数。
详情
在 7.x 版本中已弃用的 cutoff_frequency
参数在 8.0 版本中已从 match
和 multi_match
查询中删除。如果未跟踪命中总数,则无需任何配置即可实现相同的功能。
影响
请停止使用 cutoff_frequency
参数。在 match
或 multi_match
查询中包含此参数的搜索请求将返回错误。
已从搜索 API 的 sort
请求正文参数中删除 nested_filter
和 nested_path
属性。
详情
在 6.x 版本中已弃用的 nested_filter
和 nested_path
选项已被删除,转而使用 nested
上下文。
影响
请停止使用 sort
请求正文参数的 nested_filter
和 nested_path
属性。包含这些属性的请求将返回错误。
默认情况下,搜索和 get 请求现在使用自适应副本选择路由到分片。
详情
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'])
形式的请求将返回错误。
搜索 API 的 indices_boost
请求正文参数不再接受对象值。
详情
搜索请求中的 indices_boost
选项过去既可以接受对象形式的 boost,也可以接受数组形式的 boost。对象格式自 5.2 版本起已弃用,现在在 8.0 版本中已删除。
影响
请仅在 indices_boost
参数中使用数组值。在 indices_boost
参数中包含对象值的请求将返回错误。
已删除搜索 API 的 use_field_mapping
请求正文参数。
详情
在 7.0 版本中,我们开始默认使用每个字段的映射定义格式化 docvalue_fields
。为了简化从 6.x 版本的迁移,我们添加了格式选项 use_field_mapping
。此参数在 7.0 版本中已弃用,现在在 8.0 版本中已删除。
影响
请停止使用 use_field_mapping
请求正文参数。包含此参数的请求将返回错误。
兼容性
当请求rest-api-compatibility时,将忽略 use_field_mapping
参数。
搜索 API 的 from
请求正文和 URL 参数不能为负数。
详情
搜索请求过去接受 -1
作为搜索正文和 URL 中的 from
值,并将其视为默认值 0。其他负值已经被拒绝并返回错误。现在,我们也拒绝 -1
作为无效值。
影响
请将请求正文或 URL 参数中任何使用 -1
作为 from
参数的情况更改为将其设置为 0
或完全省略它。包含负值的请求将返回错误。
日期字段上的范围查询始终将数字值视为自纪元以来的毫秒数。
详情
日期字段的范围查询过去会将小数字(例如,像1000这样的四位数)误解为年份,而没有设置额外的格式,但会将其他数值解释为自 Unix 纪元以来的毫秒数。现在,我们将在没有特定 format
参数的情况下,将所有数值都视为自 Unix 纪元以来的毫秒数。如果您想查询年份,并且缺少 format
,现在需要引用输入值(例如,“1984”)。
影响
如果您在查询日期字段时没有指定 format
,请检查查询中的值是否实际上是指自 Unix 纪元以来的毫秒数,在这种情况下请使用数值。如果不是,请使用字符串值,该字符串值将由映射中字段上设置的日期格式或默认情况下由 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
角色。
对于快照和 SLM API,indices
参数不再解析为系统索引或系统数据流。
详情
对于快照和 SLM API,indices
参数不再解析为系统索引或系统数据流。 功能状态 现在是从快照备份和还原系统索引或系统数据流的唯一方法。
您不能再使用 创建 SLM 策略 API 或 创建快照 API 的 indices
参数在快照中包含系统索引。要备份系统索引,请使用 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
参数。
在 indices
参数中显式指定系统索引的 SLM 策略将无法创建快照。同样,在 indices
参数中显式指定系统索引的创建快照 API 或还原快照 API 请求将失败并返回错误。如果 indices
值包含通配符 ( *
) 模式,则该模式将不再匹配系统索引。
快照默认压缩元数据文件。
详情
之前,compress
的默认值为 false
。默认值已更改为 true
。
此更改将影响新创建的存储库以及未显式指定 compress=false
的现有存储库。
影响
更新您的工作流程和应用程序,以假设 compress
参数的默认值为 true
。
S3 快照存储库现在默认使用 DNS 样式访问模式。
详情
从 7.4 版本开始,s3
快照存储库不再默认使用现已弃用的路径样式访问模式。在 7.0、7.1、7.2 和 7.3 版本中,s3
快照存储库始终使用路径样式访问模式。对于仅支持路径样式访问但被 AWS SDK 识别为支持 DNS 样式访问的部署来说,这是一个重大更改。AWS 宣布路径样式访问模式已弃用,并且在 2020 年 9 月 30 日之后创建的存储桶上将不再支持,因此必须进行此重大更改。
影响
如果您的部署仅支持路径样式访问并且受此更改的影响,则必须将 S3 客户端设置 path_style_access
配置为 true
。
还原请求不再接受设置。
详情
在早期版本中,您可以在还原快照请求的主体中传递 settings
和 index_settings
,但 settings
值将被忽略。还原快照 API 现在会拒绝包含 settings
值的请求。
影响
停止在还原快照请求中使用 settings
参数。包含这些参数的请求将返回错误。
存储库统计信息 API 已删除。
详情
存储库统计信息 API 已删除。我们在 7.10.0 版本中弃用了这个实验性 API。
影响
请改用 存储库计量 API。
Watcher 历史记录现在写入隐藏的数据流。
详情
在 8.x 版本中,Elasticsearch 将 Watcher 历史记录写入隐藏的 .watcher-history-<index-template-version>
数据流。以前,Elasticsearch 将 Watcher 历史记录写入隐藏的 .watcher-history-<index-template-version>-<yyyy-MM-dd>
索引。
影响
更新您的请求以定位 Watcher 历史记录数据流。例如,使用 .watcher-history-*
通配符表达式。专门针对不存在的 Watcher 历史记录索引的请求可能会返回错误。
如果服务器超时,集群运行状况 API 的 HTTP 状态代码已更改。
详情
集群运行状况 API 包括等待满足某些运行状况条件的选项。如果请求的条件在超时时间内未满足,则 Elasticsearch 将发送回一个包含字段 "timed_out": true
的正常响应。在早期版本中,如果请求超时,它还会使用 HTTP 响应代码 408 Request timeout
,否则使用 200 OK
。 408 Request timeout
响应代码不适用于这种情况,因此从 8.0.0 版本开始,Elasticsearch 将对这两种情况都使用响应代码 200 OK
。
影响
要检测服务器超时,请检查 JSON 响应的 timed_out
字段。
Content-Type
响应标头不再指定字符集。
详情Content-Type
响应标头不再指定字符集。传输 JSON 数据时不需要此信息,因为 JSON 文本将始终以 Unicode 编码,默认编码为 UTF-8。
影响
某些应用程序和实用程序(例如 PowerShell 的 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。
影响
在升级之前,请通过简单地调用 toString
或 org.elasticsearch.geometry.utils.WellKnownText#toWKT/fromWKT
方法,将 Elasticsearch JDBC 驱动程序上 ResultSet#getObject
或 ResultSet#setObject
中的任何 org.elasticsearch.geo
类替换为它们的 WKT 表示形式。
此更改不会影响不使用几何类的用户。
系统要求更改
编辑如果您使用 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。
详情
现在需要 Java 17 或更高版本才能运行 Elasticsearch 及其任何命令行工具。
影响
使用 Java 17 或更高版本。尝试使用早期 Java 版本运行 Elasticsearch 8.0 将会失败。
当以 FIPS 140-2 模式运行 Elasticsearch 8.0 时,还没有可用的 FIPS 认证的 Java 17 安全模块。如果您在 FIPS 140-2 模式下运行,您将需要从您的安全组织请求一个升级到 Elasticsearch 8.0 的例外情况,或者在 Java 17 获得认证之前,继续使用 Elasticsearch 7.x。
不再支持 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
将在未来版本中移除。
影响
当您首次启动 Elasticsearch 时,会自动为 elastic
用户生成密码。如果您在启动 Elasticsearch 后运行 elasticsearch-setup-passwords
,则会失败,因为 elastic
用户密码已配置。