Snapshotの格納場所について


#1

AWSでelasticsearchを使用しているのですが、
ESのsnapshotをS3に置きたいと思っています。

pythonのelasticsearchモジュールを用いて、
S3のバケット直下にsnapshotを置くことは成功しているのですが、
S3のバケットのあるディレクトリを指定して、ディレクトリの直下にsnapshotを置くことができません。
どのようにすれば、ディレクトリ指定ができるのでしょうか?

elasticsearch.client.snapshot.create()
の引数に、
snapshot='ディレクトリ名/snapshot名'
と設定をすると、
must not contain the following characters [ , ", *, \, <, |, ,, >, /, ?]
のように怒られてしまいます。

curl(pycurl)で実行すれば解決できそうな気もしますが、elasticsearchモジュールを使用した方法で解決したいと思っています。
よろしくお願いします。


(tsgkdt) #2

https://www.elastic.co/guide/en/elasticsearch/plugins/6.2/repository-s3-repository.html
こちらにあるrepositoryの設定でbase_pathを指定してはどうでしょう?

es = Elasticsearch('http://xxx.xxx.xxx.xxx:9200')

body_params = {
    'type': 's3',
    'settings': {
        'bucket': 'es.test.root' ,
        'base_path': 'child'
    }
}

es.snapshot.create_repository(repository='forum0223', body=body_params)
es.snapshot.create(repository='forum0223', snapshot='test123')

このようにすることで、es.test.root/child 以下にsnapshotのデータ群が落ちるようになると思います。


#3

ありがとうございます。
教えて頂いた対策で解決しました!


(system) #4

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.