ISM 错误预防解决方案
每个验证规则操作的错误解决方案列在以下部分中。
目录
- 该索引不是写入索引
- 该索引没有别名
- 跳过翻转操作为 true
- 此索引已成功翻转
- 翻转策略缺少 rollover_alias 索引设置
- 数据过大并超出阈值
- 超出最大分片数
- 该索引是某些数据流的写入索引
- 索引被阻止
该索引不是写入索引
要确认索引是否为写入索引,请运行以下请求
GET <index>/_alias?pretty
如果响应不包含 "is_write_index"
: true,则该索引不是写入索引。以下示例确认该索引是写入索引
{
"<index>" : {
"aliases" : {
"<index_alias>" : {
"is_write_index" : true
}
}
}
}
要将索引设置为写入索引,请运行以下请求
PUT <index>
{
"aliases": {
"<index_alias>" : {
"is_write_index" : true
}
}
}
该索引没有别名
如果索引没有别名,您可以通过运行以下请求添加一个
POST _aliases
{
"actions": [
{
"add": {
"index": "<target_index>",
"alias": "<index_alias>"
}
}
]
}
跳过翻转操作为 true
如果发生跳过翻转操作的情况,请运行以下请求
GET <target_index>/_settings?pretty
如果您收到第一个示例中的响应,可以通过运行第二个示例中的请求来重置它
{
"index": {
"opendistro.index_state_management.rollover_skip": true
}
}
PUT <target_index>/_settings
{
"index": {
"index_state_management.rollover_skip": false
}
}
此索引已成功翻转
从索引中移除翻转策略,以防止此错误再次发生。
翻转策略缺少 rollover_alias 索引设置
向翻转策略添加 rollover_alias
索引设置以解决此问题。运行以下请求
PUT _index_template/ism_rollover
{
"index_patterns": ["<index_patterns_in_rollover_policy>"],
"template": {
"settings": {
"plugins.index_state_management.rollover_alias": "<rollover_alias>"
}
}
}
数据过大并超出阈值
检查 JVM 信息并增加堆内存。
超出最大分片数
每个节点或每个索引的分片限制导致此问题发生。通过运行以下请求检查是否存在 total_shards_per_node
限制
GET /_cluster/settings
如果响应包含 total_shards_per_node
,请通过运行以下请求暂时增加其值
PUT _cluster/settings
{
"transient":{
"cluster.routing.allocation.total_shards_per_node":100
}
}
要检查索引是否存在分片限制,请运行以下请求
GET <index>/_settings/index.routing-
如果响应包含第一个示例中的设置,请增加其值或将其设置为 -1
以获得无限分片,如第二个示例所示
"index" : {
"routing" : {
"allocation" : {
"total_shards_per_node" : "10"
}
}
}
PUT <index>/_settings
{"index.routing.allocation.total_shards_per_node":-1}
该索引是某些数据流的写入索引
如果您仍想删除索引,请检查您的数据流设置并更改写入索引。
索引被阻止
通常,索引被阻止是因为磁盘使用量已超过洪水阶段水位,并且索引具有 read-only-allow-delete
阻止。要解决此问题,您可以
- 移除
-index.blocks.read_only_allow_delete-
参数。 - 暂时提高磁盘水位线。
- 暂时禁用磁盘分配阈值。
为防止问题再次发生,最好通过增加磁盘空间、添加新节点或删除不再需要的数据或索引来减少磁盘使用量。
通过运行以下请求移除 -index.blocks.read_only_allow_delete-
PUT <index>/_settings
{
"index.blocks.read_only_allow_delete": null
}
通过运行以下请求提高低磁盘水位线
PUT _cluster/settings
{
"transient": {
"cluster": {
"routing": {
"allocation": {
"disk": {
"watermark": {
"low": "25.0gb"
}
}
}
}
}
}
}
通过运行以下请求禁用磁盘分配阈值
PUT _cluster/settings
{
"transient": {
"cluster": {
"routing": {
"allocation": {
"disk": {
"threshold_enabled" : false
}
}
}
}
}
}