如何解决升级 Amazon Elasticsearch Service 后出现的“Unable to find saved objects”错误?

上次更新日期:2020 年 4 月 10 日

我最近将我的 Amazon Elasticsearch Service (Amazon ES) 集群升级到了版本 7.1。但是,我在 Kibana 中收到“Unable to find saved objects”错误。如何解决此问题?

简短描述

Amazon ES 集群用户在升级到 Amazon ES 版本 7.1 后,有时可能会遇到 400 错误请求错误。此升级可能会导致出现用户无法在 Kibana 中找到已保存的对象的问题。此外,在使用 Kibana 版本 7.x 时,无法直接还原 .kibana 索引。必须将 .kibana 索引用作别名。例如,如果升级到版本 7.1,Kibana 将迁移到 .kibana_1 索引中,然后将 .kibana 设置为索引别名。

解决方法

要在 Kibana 中找到并还原已保存的对象,请执行以下步骤:

1.    使用以下映射创建一个 .kibana_1 索引:

PUT /.kibana_1
{                                                            
    "aliases": {},
    "mappings": {
      "properties": {
        "config": {
          "properties": {
            "buildNum": {
              "type": "long"
            }
          }
        },
        "index-pattern": {
          "properties": {
            "fields": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            },
            "timeFieldName": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            },
            "title": {
              "type": "text",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                }
              }
            }
          }
        },
        "type": {
          "type": "keyword",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "updated_at": {
          "type": "date"
        }
      }
    },
    "settings": {
      "index": {
        "number_of_shards": "1",
        "number_of_replicas": "1"
      }
    }
}

2.    然后,创建一个 .kibana_backup 索引:

PUT .kibana_backup

3.    通过以下查询,使用 reindex API 将数据从 .kibana 索引复制到 .kibana_backup 索引:

POST _reindex
{
  "source": {
    "index": ".kibana"
  },
  "dest": {
    "index": ".kibana_backup"
  }
}

这些查询会复制您的数据,并保存在 .kibana_backup 索引中。

4.    删除 .kibana 索引:

DELETE .kibana

5.    创建一个 .kibana 别名并指向 .kibana _1 索引:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : ".kibana_1", "alias" : ".kibana" } }
    ]
}

6.    使用重建索引 API 将数据从 .kibana_backup 索引复制到新创建的 .kibana_1 索引:  

POST _reindex
{
  "source": {
    "index": ".kibana_backup"
  },
  "dest": {
    "index": ".kibana_1"
  }
}

.kibana_backup 中的数据现已还原并保存在.kibana_1 索引中。

7.    搜索保存的索引模式,或从 Kibana 的 Management 选项卡创建一个新索引模式。如果您能够执行这些任务,就证明问题已解决。

8.    删除 .kibana_backup 索引以清除所有内容:

DELETE .kibana_backup

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?