在 Elasticsearch 中恢复特定索引

Joo*_*187 3 linux elasticsearch

我有 2 个 Elasticsearch(1 个用于 PROD,1 个用于 DEV 环境)并且我已经设置了一个 NFS 分区(存储库)用于通过 bash 脚本从 PROD 备份所有索引。我们在 DEV Elasticsearch 上有相同的索引,但里面有不同的数据。今天开发人员说他想要从PROD到DEV的2个索引的完整副本。我已经有了完整的索引备份!我知道如何恢复所有索引,但如何选择仅有的 2 个索引?不是完全恢复索引?例如,我有包含这些家伙的快照

{
   "snapshot":"elasticsearch_all_indicies_25_06_2018",
   "uuid":"aGzmhyOkmlkfmflnslndfs",
   "version_id":5060699,
   "version":"5.6.6",
   "indices":[
      "banners",
      "products",
      "catalogs",
      "darbiz",
      ".kibana",
      "invoices",
      "bundles",
      "groups",
      "searchitems",
      "params",
      "orders"
   ],
   "state":"SUCCESS",
   "start_time":"2018-06-24T23:30:01.978Z",
   "start_time_in_millis":1529883001978,
   "end_time":"2018-06-24T23:30:06.765Z",
   "end_time_in_millis":1529883006765,
   "duration_in_millis":4787,
   "failures":[

   ],
   "shards":{
      "total":75,
      "failed":0,
      "successful":75
   }
}
Run Code Online (Sandbox Code Playgroud)

例如,我只需要恢复到 DEV 的订单和参数索引,而不是整个集合,我该怎么做?谢谢你

Rya*_*ier 5

您可以在发送到 REST API 的 JSON 内容的正文中指定要恢复的索引。例如:

POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "order,params",
  "ignore_unavailable": true,
  "include_global_state": true
}
Run Code Online (Sandbox Code Playgroud)

参考

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html#_restore