Как найти индекс Elasticsearch в моментальном снимке?

#amazon-web-services #elasticsearch #aws-elasticsearch

#amazon-web-services #elasticsearch #aws-elasticsearch

Вопрос:

У меня есть кластер Elasticsearch, работающий на AWS, где у меня есть снимок, подобный этому

  {
     "snapshot": "2016-07-13_165430",
     "indices": [
        "analytical-2016-06-15",
        "analytical_2016-06-13",
        "analytical_2016-07-13",
        "operational-2016-06-15",
        "operational_2016-06-13",
        "operational_2016-07-13"
     ],
     "state": "SUCCESS",
     "start_time": "2016-10-10T23:54:33.705Z",
     "start_time_in_millis": 1476143673705,
     "end_time": "2016-10-10T23:54:44.893Z",
     "end_time_in_millis": 1476143684893,
     "duration_in_millis": 11188,
     "failures": [],
     "shards": {
        "total": 30,
        "failed": 0,
        "successful": 30
     }
  },
  {
     "snapshot": "2016-07-13_165546",
     "indices": [
        "analytical-2016-06-15",
        "analytical_2016-06-13",
        "analytical_2016-07-13",
        "operational-2016-06-15",
        "operational_2016-06-13",
        "operational_2016-07-13"
     ],
     "state": "SUCCESS",
     "start_time": "2016-10-10T23:55:48.808Z",
     "start_time_in_millis": 1476143748808,
     "end_time": "2016-10-10T23:55:52.420Z",
     "end_time_in_millis": 1476143752420,
     "duration_in_millis": 3612,
     "failures": [],
     "shards": {
        "total": 30,
        "failed": 0,
        "successful": 30
     }
  }
  

Теперь все эти индексы работают онлайн с некоторыми другими индексами, такими как:
«аналитический-2016-06-15 «,
«аналитический_2016-06-13»,
«аналитический_2016-07-13»,
«операционный-2016-06-15 «,
«operational_2016-06-13»,
«operational_2016-07-13»
«operational_2016-09-13»
….

Мне нужно проверить, созданы ли резервные копии моих индексов или нет, и если они уже созданы, в каком моментальном снимке они существуют.

Ответ №1:

Я подозреваю, что @air (был) заинтересован в том, чтобы определить, какой из многих снимков содержит данный индекс; вставленный пример был всего лишь одним просмотром истории снимков. Когда вы делаете ежедневные снимки в течение определенного периода времени, а индексы были добавлены / удалены, поиск вручную будет сложной задачей.

Похоже, что нет вызова API для «найти мне все снимки, содержащие индекс operational_2021-06-10 «, но вот вариант автоматизации:

  curl -XGET "http://cluster:9200/_snapshot/myrepo/*" |
   jq -c '.snapshots[] | select(.indices | index("operational_2021-06-10")) | { snapshot }'

{"snapshot":"daily-snap-2021.06.10-hjmskkjsryyq82asmxiuva"}
{"snapshot":"daily-snap-2021.06.11-eayyiiort0cx97r_jscara"}
{"snapshot":"daily-snap-2021.06.12-rmrsbmsespgf0_czu721hw"}
{"snapshot":"daily-snap-2021.06.13-meeoachori61w5r3n3qzaq"}
{"snapshot":"daily-snap-2021.06.14-espbnhuprcckqylk3xltwq"}
{"snapshot":"daily-snap-2021.06.15-sbosayasthinaudxaqw3pa"}
  

Ответ №2:

Я смущен вашим вопросом, поскольку вы опубликовали snapshot json, который сообщает вам, какие именно индексы сохраняются в каждом моментальном снимке. Вам нужно просмотреть каждый моментальный снимок в каждом репозитории моментальных снимков (что, я думаю, вы уже знаете, как это сделать) и посмотреть на индексы в каждом моментальном снимке.

Это единственный способ AFAIK определить, какие индексы были скопированы, когда и с помощью каких снимков.

Вот документация к api snapshot: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html