Elasticsearch не может восстановить существующий снимок. Blob не найден - PullRequest
0 голосов
/ 12 ноября 2018

Версия Elasticsearch: 6.3.2

Я пытался восстановить старый снимок (сделанный в январе 2018 года) Elasticsearch 5.2.2 из репозитория S3 только для чтения. Необходимые разрешения в роли IAM для экземпляра настроены.

Вот определение репозитория: `` `

{
  "production_copy_old": {
    "type": "s3",
    "settings": {
      "bucket": "elasticsearch-snapshot",
      "readonly": "true",
      "base_path": "snaps//"
    }
  }
}

`` `

Хранилище настроено правильно, потому что, когда я выдаю снимок GET в хранилище, я получаю правильный ответ:

GET _snapshot/production_copy_old/elasticsearch-snapshot-201804190000
{ 
    "snapshots": [
        {
          "snapshot": "elasticsearch-snapshot-201804190000",
          "uuid": "fT0oftdTQhi5sns704pg45",
          "version_id": 5020299,
          "version": "5.2.2",
          "indices": [<huge list of indices>],
          "state": "SUCCESS",
          "start_time": "2018-04-19T00:00:20.726Z",
          "start_time_in_millis": 1524096020726,
          "end_time": "2018-04-19T00:09:30.210Z",
          "end_time_in_millis": 1524096570210,
          "duration_in_millis": 549484,
          "failures": [],
          "shards": {
            "total": 2875,
            "failed": 0,
            "successful": 2875
          }
        }
      ]

}

Однако, когда я пытаюсь восстановить снимок, я получаю сообщение об ошибке:

POST _snapshot/production_copy_old/elasticsearch-snapshot-201804190000/_restore

    {
      "indices": "myindex-201801",
      "ignore_unavailable": false,
      "include_global_state": false,
      "index_settings": {
        "index.number_of_replicas": 0
      }
    }

    {
      "error": {
        "root_cause": [
          {
            "type": "remote_transport_exception",
            "reason": "[s-elasticsearch-2][IP:9300][cluster:admin/snapshot/restore]"
          }
        ],
        "type": "no_such_file_exception",
        "reason": "Blob object [meta-fT0oftdTQhi5ns70paP4pg.dat] not found: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID:<reqid>; S3 Extended Request ID:<extended-req-id)"
      },
      "status": 500
    }

Однако, когда я пытаюсь aws s3 ls elasticsearch-snapshot/snaps//meta-fT0oftdTQhi5ns70paP4pg.dat, я вижу, что экземпляр может увидеть объект, а также загрузить его. Из этого мы можем знать, что разрешения настроены правильно.

Кроме того, причина, по которой префикс имеет // ближе к концу, заключается в том, что мы использовали этот репозиторий начиная с Elasticsearch 2.3. В этой версииasticsearch мы добавили косую черту в настройку префикса определения хранилища. В августе мы переехали в новый репозиторий с правильным определением префикса.

Есть ли способ, как мы можем обойти это? Нужно ли менять префикс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...