升级检查
更新时间:2023-11-28
在升级百度智能云 Elasticsearch 集群版本前,用户需要通过升级检查,检查集群状态是否正常、是否存在不兼容的配置等,并进行调整。
本文介绍在版本升级前需要完成的人工检查、集群状态检查和系统兼容性检查,以及兼容性检查失败时的调整方法。
背景信息
- 升级检查操作入口,在 百度智能云 Elasticsearch 控制台-集群详情,单击版本升级。版本升级操作步骤详见版本升级。
- 本文的命令都可在Kibana控制台上执行,关于如何登录Kibana控制台,请参见Kibana使用指南。
注意:
需特别留意本文中需要人工检查的部分(无法自动检查),并在升级前完成代码兼容性改造,避免升级后造成集群无法正常访问。
通用检查项
每个版本升级之前,系统都会自动进行以下几个通用检查项的检查。
集群健康状态检查
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 集群健康状态 | CRITICAL | 集群健康状态 |
备份检查
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 快照备份 | WARNING | 详细介绍参考 快照备份文档 |
系统插件检查
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 集群插件 | CRITICAL | 详细介绍参考 插件说明文档 |
说明:
- 自定义插件不支持直接升级,请先卸载自定义插件,再进行版本升级操作。升级成功后可重新安装自定义插件。
Elasticsearch 6.5 版本升级到 6.8 版本配置检查
自动检查的配置项列表
以下均为升级检查中自动执行的系统检查项,用户也可手动检查并修改。
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 集群设置(node.store.allow_mmapfs) | CRITICAL | 集群设置node.store.allow_mmapfs ,在6.8版本改名为node.store.allow_mmap ,详见 Breaking changes in 6.8 |
2 | 索引级别 | 索引设置(geo_shape) | WARNING | 索引设置tree, precision, tree_levels, distance_error_pct, points_only, 和 strategy被废弃被废弃,详见 Breaking changes in 6.8 |
3 | 索引模板级别 | 索引模板设置(geo_shape) | WARNING | 索引设置tree, precision, tree_levels, distance_error_pct, points_only, 和 strategy被废弃被废弃,详见 Breaking changes in 6.8 |
说明:
- 警告(WARNING):检查失败时仍可以升级。此类型检查项对应设置在升级后将被忽略。
- 错误(CRITICAL):检查失败时无法升级。此类型检查项对应设置在目标版本无法兼容。
配置不兼容调整方法
集群级别
- 集群设置(node.store.allow_mmapfs) 在配置修改页面Elasticsearch YML文件配置中删除设置后重启集群
- 索引设置(geo_shape) 通过 ES 索引设置更新接口取消此设置。
索引级别
- 索引设置(geo_shape) 通过 ES 索引设置更新接口取消此设置。
索引模板级别
- 使用 API
PUT _template/***
更新模板。
Elasticsearch 6.x 版本升级到 7.x 版本配置检查
需人工自查的不兼容配置
- 对于超过1024个字段数的索引,查询时如果不指定字段会非常消耗性能。建议设置默认查询字段
index.query.default_field
。如果仍要查询所有字段,那么可以通过提高“布尔查询最大子句数”设置indices.query.bool.max_clause_count
来实现。 include_type_name
默认为 false,升级后默认将无法创建包含 type 的索引,需要显式指定参数include_type_name
:
注意:
用户需重点关注集群是否有此项不兼容配置,避免升级后造成集群无法正常访问。
PUT my_index?include_type_name
{
"mappings": {
"type1": {
"properties": {
"name": {
"type": "text"
}
}
}
}
}
自动检查的配置项列表
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 用户代理预处理器(User agent processor)设置 | WARNING | 用户代理预处理器(User agent processor)的格式默认值变为ecs ,详见 Breaking changes in 7.0 |
2 | 集群级别 | 集群分片数 | WARNING | 每个节点最大 shard 数cluster.max_shards_per_node 默认1000,shard 数超过在升级后将无法创建新分片,详见 Breaking changes in 7.0 |
3 | 集群级别 | 集群设置(discovery.zen.no_master_block) | WARNING | 集群设置 discovery.zen.no_master_block 改名为 cluster.no_master_block ,详见 Breaking changes in 7.0 |
4 | 集群级别 | 预处理器管道(Ingest pipeline)日期格式 | CRITICAL | 预处理器管道(Ingest pipeline)date 或date_index_name 处理器使用废弃的日期格式,详见 Breaking changes in 7.0 |
5 | 集群级别 | 集群设置(thread_pool.index) | CRITICAL | thread_pool.index.* 设置被废弃,详见 Breaking changes in 7.0 |
6 | 集群级别 | 集群设置(thread_pool.bulk) | CRITICAL | thread_pool.bulk.* 设置被废弃,详见 Breaking changes in 7.0 |
7 | 集群级别 | 集群设置(pidfile) | CRITICAL | 集群设置pidfile 改名为node.pidfile ,详见 Breaking changes in 7.0 |
8 | 集群级别 | 集群设置(processors) | CRITICAL | 集群设置processors 改名为node.processors ,详见 Breaking changes in 7.0 |
9 | 集群级别 | 集群设置(http.tcp_no_delay) | CRITICAL | 集群设置http.tcp_no_delay 改名为http.tcp.no_delay ,详见 Breaking changes in 7.0 |
10 | 集群级别 | 集群设置(network.tcp.connect_timeout) | CRITICAL | 集群设置network.tcp.connect_timeout 被废弃,请使用transport.connect_timeout ,详见 Breaking changes in 7.0 |
11 | 索引级别 | 索引创建版本 | CRITICAL | 不允许6.0版本之前创建的索引升级到7.x版本,详见 Breaking changes in 7.0 |
12 | 索引级别 | 多Type索引 | CRITICAL | 一个索引不能有多个Type,详见 Breaking changes in 7.0 |
13 | 索引级别 | Delimited payload 词汇单元过滤器(Token filter)索引设置 | WARNING | Delimited payload 语汇单元过滤器(Token filter)从 delimited_payload_filter 改名为 delimited_payload ,详见 Breaking changes in 7.0 |
14 | 索引级别 | 索引设置(index.percolator.map_unmapped_fields_as_string) | CRITICAL | 索引设置index.percolator.map_unmapped_fields_as_string 改名为 index.percolator.map_unmapped_fields_as_text ,详见 Breaking changes in 7.0 |
15 | 索引级别 | 索引名 | WARNING | 索引名不能包含“:”,详见 Breaking changes in 7.0 |
16 | 索引级别 | 索引设置(index.unassigned.node_left.delayed_timeout) | CRITICAL | 索引设置 index.unassigned.node_left.delayed_timeout 负数值被废弃,详见 Breaking changes in 7.0 |
17 | 索引级别 | 索引设置(index.shard.check_on_startup) | CRITICAL | 索引设置 index.shard.check_on_startup 的值为fix 被废弃,详见 Breaking changes in 7.0 |
18 | 索引级别 | 经典相似性(classic similarity)索引 Mapping 参数 | WARNING | 经典相似性(classic similarity)索引 Mapping 参数被废弃,详见 Breaking changes in 7.0 |
19 | 索引级别 | 经典相似性(classic similarity)索引设置 | WARNING | 经典相似性(classic similarity)索引设置被废弃,详见 Breaking changes in 7.0 |
20 | 索引级别 | 索引字段数 | WARNING | 对于超过1024个字段的索引,建议设置默认查询字段(index.query.default_field )或提升最大字段数设置(indices.query.bool.max_clause_count ),否则升级后将导致不指定字段的查询无法正常使用,详见 Breaking changes in 7.0 |
21 | 索引级别 | 索引 Mapping 日期格式 | CRITICAL | Joda-Time 格式改为 Java Time,详见 Breaking changes in 7.0 |
22 | 索引模板级别 | Delimited payload 语汇单元过滤器(Token filter)索引模板设置 | CRITICAL | Delimited payload 语汇单元过滤器(Token filter)从 delimited_payload_filter 改名为 delimited_payload ,详见 Breaking changes in 7.0 |
23 | 索引模板级别 | 索引模板设置(index.percolator.map_unmapped_fields_as_string) | CRITICAL | 索引模板设置 index.percolator.map_unmapped_fields_as_string 改名为 index.percolator.map_unmapped_fields_as_text ,升级后不兼容,详见 Breaking changes in 7.0 |
24 | 索引模板级别 | 索引模板设置(index.unassigned.node_left.delayed_timeout) | CRITICAL | 索引模板设置 index.unassigned.node_left.delayed_timeout 负数值被废弃,升级后不兼容,详见 Breaking changes in 7.0 |
25 | 索引模板级别 | 索引模板设置(index.shard.check_on_startup) | CRITICAL | 索引模板设置 index.shard.check_on_startup 的值为fix 被废弃,升级后不兼容,详见 Breaking changes in 7.0 |
26 | 索引模板级别 | 经典相似性(classic similarity)索引模板 Mapping 参数 | CRITICAL | 经典相似性(classic similarity)索引模板 Mapping 参数被废弃,升级后不兼容,详见 Breaking changes in 7.0 |
27 | 索引模板级别 | 经典相似性(classic similarity)索引模板设置 | CRITICAL | 经典相似性(classic similarity)索引模板设置被废弃,升级后不兼容,详见 Breaking changes in 7.0 |
28 | 索引模板级别 | 索引模板字段数 | CRITICAL | 对于超过1024个字段的索引模板,建议设置默认查询字段(index.query.default_field )或提升最大字段数设置(indices.query.bool.max_clause_count ),否则升级后将导致不指定字段的查询无法正常使用,详见 Breaking changes in 7.0 |
29 | 索引模板级别 | 索引模板 Mapping 日期格式 | CRITICAL | Joda-Time 格式改为 Java Time,详见 Breaking changes in 7.0 |
说明:
- 警告(WARNING):检查失败时仍可以升级。此类型检查项对应设置在升级后将被忽略。
- 错误(CRITICAL):检查失败时无法升级。此类型检查项对应设置在目标版本无法兼容。
配置不兼容调整方法
集群级别
- 用户代理预处理器(User agent processor)设置
使用非
ecs
格式的 user agent 将被废弃,应调整为:
PUT _ingest/pipeline/my_pipeline1
{
"processors" : [
{
"user_agent" : {
"field" : "agent",
"ecs": true
}
}
]
}
- 集群分片数 对于超过分片数限制的集群,有两种调整方法:
- 降低集群分片数(通过清理过期索引、shrink 索引 等)。
- 修改集群设置提高分片数限制。
PUT _cluster/settings
{
"persistent": {
"cluster.max_shards_per_node": 5000
}
}
- 集群设置(discovery.zen.no_master_block)
对于使用了集群设置
discovery.zen.no_master_block
的集群,在升级完成后调整为cluster.no_master_block
,例如:
PUT _cluster/settings
{
"persistent": {
"cluster.no_master_block": "write"
}
}
- 预处理器管道(Ingest pipeline)日期格式 可参考 Joda based date formatters are replaced with java ones 进行调整。
- 其他集群设置 在配置修改页面 Elasticsearch YML文件配置中删除设置后重启集群生效。
索引级别
- 索引创建版本和多Type索引 不允许6.0版本之前创建的索引升级到7.x版本,一个索引不能有多个Type,对于需要保留的索引,需要在升级前执行 reindex , 例如:
POST _reindex
{
"source": {
"index": "my_index"
},
"dest": {
"index": "new_my_index"
}
}
- Delimited payload 语汇单元过滤器(Token filter)索引模板设置
将索引设置中的
delimited_payload_filter
改为delimited_payload
,例如原始索引如下:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_plus_delimited": {
"tokenizer": "whitespace",
"filter": [ "plus_delimited" ]
}
},
"filter": {
"plus_delimited": {
"type": "delimited_payload_filter",
"delimiter": "+",
"encoding": "int"
}
}
}
}
}
修改后的索引:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"whitespace_plus_delimited": {
"tokenizer": "whitespace",
"filter": [ "plus_delimited" ]
}
},
"filter": {
"plus_delimited": {
"type": "delimited_payload",
"delimiter": "+",
"encoding": "int"
}
}
}
}
}
- 索引设置(index.percolator.map_unmapped_fields_as_string)
将索引设置
index.percolator.map_unmapped_fields_as_string
调整为index.percolator.map_unmapped_fields_as_text
(此设置调整前需要 close 索引)。
PUT my_index/_settings
{
"index.percolator.map_unmapped_fields_as_text": true
}
- 索引名 对于包含“:”的索引,需执行 reindex,例如:
POST _reindex
{
"source": {
"index": "my_index"
},
"dest": {
"index": "new_my_index"
}
}
- 索引设置(index.unassigned.node_left.delayed_timeout)
将索引设置
index.unassigned.node_left.delayed_timeout
调整为正整数:
PUT my_index/_settings
{
"index.unassigned.node_left.delayed_timeout": 0
}
- 索引设置(index.shard.check_on_startup)
将索引设置
index.shard.check_on_startup
值为fix
调整为其它值,例如:
PUT my_index/_settings
{
"index.shard.check_on_startup": true
}
- 经典相似性(classic similarity)索引 Mapping 参数、经典相似性(classic similarity)索引设置 对于包含经典相似性(classic similarity)的索引设置或 Mapping,调整为其他类型,例如原始索引如下:
PUT my_index
{
"mappings": {
"doc": {
"properties": {
"field1": {
"properties": {
"field4": {
"type": "text",
"similarity": "classic"
}
}
}
}
}
}
}
修改后的索引为:
PUT my_index
{
"mappings": {
"doc": {
"properties": {
"field1": {
"properties": {
"field4": {
"type": "text",
"similarity": "BM25"
}
}
}
}
}
}
}
- 索引字段数 对于超过1024个字段的索引,有两种调整方法:
- 设置默认查询字段设置
index.query.default_field
。
PUT my_index/_settings
{
"index.query.default_field": "field1"
}
- 在配置修改页面 Elasticsearch YML文件配置中,提升最大字段数设置
indices.query.bool.max_clause_count
- 索引 Mapping 日期格式 可参考 Joda based date formatters are replaced with java ones 进行调整。
索引模板级别
索引模板级别的不兼容设置调整请参考 索引级别 。
Elasticsearch 7.4 版本升级到 7.10 版本配置检查
自动检查的配置项列表
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 集群设置(thread_pool.listener.queue_size) | CRITICAL | 集群设置thread_pool.listener.queue_size 被废弃,详见 Breaking changes in 7.10 |
2 | 集群级别 | 集群设置(thread_pool.listener.size) | CRITICAL | 集群设置thread_pool.listener.size 被废弃,详见 Breaking changes in 7.10 |
3 | 集群级别 | 集群设置(cluster.remote.connect) | CRITICAL | 集群设置cluster.remote.connect 改名为node.remote_cluster_client ,详见 Breaking changes in 7.10 |
4 | 集群级别 | 集群设置(node.local_storage) | CRITICAL | 集群设置node.local_storage 被废弃,详见 Breaking changes in 7.10 |
5 | 集群级别 | 集群设置(script.cache.max_size) | CRITICAL | 集群设置script.cache.max_size 改名为script.context.cache_max_size ,详见 Breaking changes in 7.10 |
6 | 集群级别 | 集群设置(script.cache.expire) | CRITICAL | 集群设置script.cache.expire 改名为script.context.cache_expire ,详见 Breaking changes in 7.10 |
7 | 集群级别 | 集群设置(script.max_compilations_rate) | CRITICAL | 集群设置script.max_compilations_rate 改名为script.context.max_compilations_rate ,详见 Breaking changes in 7.10 |
8 | 集群级别 | 集群设置(.tcp.keep_idle和.tcp.keep_interval) | CRITICAL | 集群设置*.tcp.keep_idle 和*.tcp.keep_interval 不能超过300s,详见 Breaking changes in 7.10 |
9 | 集群级别 | 集群设置(cluster.join.timeout) | CRITICAL | 集群设置cluster.join.timeout 被废弃,详见 Breaking changes in 7.10 |
10 | 集群级别 | 集群设置(cluster.routing.allocation.disk.include_relocations) | CRITICAL | 集群设置cluster.routing.allocation.disk.include_relocations 被废弃,详见 Breaking changes in 7.10 |
11 | 索引级别 | 索引设置(boost) | CRITICAL | mappings 中的boost 被废弃,详见 Breaking changes in 7.10 |
12 | 索引级别 | 索引设置(index.translog.retention.size和index.translog.retention.age) | WARNING | index.translog.retention.size 和index.translog.retention.age 被废弃,详见 Breaking changes in 7.10 |
13 | 索引模板级别 | 索引模板设置(boost) | CRITICAL | mappings 中的boost 被废弃,详见 Breaking changes in 7.10 |
14 | 索引模板级别 | 索引模板设置(index.translog.retention.size和index.translog.retention.age) | WARNING | index.translog.retention.size 和index.translog.retention.age 被废弃,详见 Breaking changes in 7.10 |
说明:
- 警告(WARNING):检查失败时仍可以升级。此类型检查项对应设置在升级后将被忽略。
- 错误(CRITICAL):检查失败时无法升级。此类型检查项对应设置在目标版本无法兼容。
配置不兼容调整方法
集群级别
- 集群设置 在配置修改页面 Elasticsearch YML文件配置中删除设置后重启集群生效。
索引级别
- 索引设置(boost) 去掉设置
- 索引设置(index.translog.retention.size和index.translog.retention.age) 去掉设置
索引模板级别
- 索引模板设置(boost) 去掉设置
- 索引模板设置(index.translog.retention.size和index.translog.retention.age) 去掉设置
内核版本升级检查项
重要
此检查只针对于Elastichsearch7.10.2版本,其他集群版本内核升级时不进行检查。
自动检查的配置项列表
序号 | 配置维度 | 配置信息 | 兼容性 | 详细说明 |
---|---|---|---|---|
1 | 集群级别 | 向量检索模板设置 | WARNING | 低版本升级到1.2及以上版本,升级过程终中读写会受影响,升级完毕,读写功能恢复正常。 |
2 | 索引级别 | 向量检索设置 | WARNING | 低版本升级到1.2及以上版本,升级过程终中读写会受影响,升级完毕,读写功能恢复正常。 |
3 | 索引级别 | BOS冷热索引检查 | CRITICAL | 内核1.0.0版本冷热分离索引升级到高版本仅支持冷重启模式,不支持蓝绿模式。 |
说明:
- 警告(WARNING):检查失败时仍可以升级。此类型检查项对应设置在升级后将被忽略。
- 错误(CRITICAL):检查失败时无法升级。此类型检查项对应设置在目标版本无法兼容。