ELK stackelasticsearch

[Elasticsearch实战] snapshot rest

2017-06-17  本文已影响819人  king_wang

长期运维elasticsearch时,你可能会遇到一个非常实用的需求:elasticsearch集群的存储空间有限,而每天都有海量的日志数据流入集群中。但是旧数据往往使用频率极低,那么是不是可以定期将过期数据从集群中移除,当必须要使用的时候再移入。

一般使用Elasticsearch的公司都有hadoop集群,那么我们可以这么做:把 Elasticsearch 索引数据转移到 HDFS 上,以解决 Elasticsearch 上的磁盘空间;而在我们需要的时候,又可以从 HDFS 上把索引恢复回来继续使用。

我们可以利用snapshot/restore两个api做到这一点。注:如果想使用HDFS作为快照的存储介质,必须事先安装repository-hdfs插件(官方还提供了S3,HDFS,Azure,GoogleCloudStorage对应插件)

sudo bin/elasticsearch-plugin install repository-hdfs

或者离线安装
https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-hdfs/repository-hdfs-5.4.1.zip

创建repository

curl -XPUT 'localhost:9200/_snapshot/hdfs_repository' -d 
'{
  "type": "hdfs",
  "settings": {
    "uri": "hdfs://172.168.1.39:8020/",
    "path": "elasticsearch/122_123_es-test"
  }
}'

如果遇到问题你可以看我的文章:[ElasticSearch填坑]创建hdfs repository: Permission Denied

创建snapshot

curl -XPUT 'localhost:9200/_snapshot/hdfs_repository/snapshot_1' -d 
'{
  "indices": "logs-181998",
  "ignore_unavailable": true,
  "include_global_state": false
}'

"ignore_unavailable": true忽略有问题的shard,"include_global_state": false快照里不放入集群global信息。

如果遇到问题你可以看我的文章:[ElasticSearch填坑]创建Snapshot: SecurityException

还原restore

curl -XPUT 'localhost:9200/_snapshot/hdfs_repository/snapshot_1/_restore' -d 
'{
  "indices": "logs-181998",
  "ignore_unavailable": true,
  "include_global_state": false,
  "rename_pattern": "logs(.+)",
  "rename_replacement": "restored_logs$1"
}'

rename_patternrename_replacement用于重命名index,因为无法将index还原到open的index。

如果你想更深入的了解snapshot,可以看我的文章[Elasticsearch实战]snapshot 探索

上一篇下一篇

猜你喜欢

热点阅读