You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置ignore_unavailable=false时,关闭的Elasticsearch索引快照成功异常咨询

问题描述

根据Elasticsearch 8.2的Create snapshot API文档说明:

ignore_unavailable(可选,布尔值)如果为false,当indices中存在缺失或已关闭的数据流或索引时,快照创建会失败。

但实际操作中,已关闭索引index_1000_6_1后,设置"ignore_unavailable":"false"创建快照却成功返回accepted: true,与文档描述不符。

操作步骤:

  1. 关闭索引:
POST https://someuri:9200/index_1000_6_1/_close

响应:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "indices": {
        "index_1000_6_1": {
            "closed": true
        }
    }
}
  1. 创建快照:
PUT https://someuri:9200/_snapshot/my_backup/snap_test

请求体:

{
"indices":"index_1000_6_1",
"wait_for_completion":"true",
"ignore_unavailable":"false"
}

响应:

{
    "accepted": true
}
原因分析

你忽略了include_closed_indices参数的默认行为:

  • Elasticsearch 8.2中,include_closed_indices是创建快照时的可选参数,默认值为true。
  • 当该参数为true时,关闭的索引会被视为「可快照的有效索引」,并不会触发ignore_unavailable=false的失败条件——只有当索引不存在,或者在include_closed_indices=false的前提下索引被关闭时,才会被判定为「不可用」,进而导致快照创建失败。
验证方法

如果想要触发文档中描述的失败场景,需要在创建快照时显式设置include_closed_indices=false:

PUT https://someuri:9200/_snapshot/my_backup/snap_test

请求体:

{
"indices":"index_1000_6_1",
"wait_for_completion":"true",
"ignore_unavailable": false,
"include_closed_indices": false
}

此时请求会失败,符合文档描述的预期。

另外还有一个细节:你请求体中ignore_unavailable的值是字符串"false",而非标准JSON布尔值false。虽然Elasticsearch通常会自动转换字符串类型的布尔值,但建议使用标准格式,避免潜在的解析问题。

内容的提问来源于stack exchange,提问作者Amir M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:12:21