2015年夏にAmazon ESが東京リージョンにやってきました
もともと、EC2上でElasticsearchを運用していたのですが、AmazonESがやってきたので2015年10月に移行しました。
使っていたプラグインはAmazonESにも搭載されていましたし、Scripts FieldsがAmazonESでは使えないのがどうかな~と思ったのですが、運用楽になるしそもそもScripts Fields使ってなかったのでとっとと移行しちゃった話です。
流れは以下のような感じ
- elasticsearch-cloud-awsプラグインをinstall
- リポジトリの作成
- スナップショットをS3に作成
- AmazonESリポジトリの作成
- AmazonESにスナップショットのrestore
1. elasticsearch-cloud-awsプラグインをinstall
まずはスナップショットをS3に作成するためにelasticsearch-cloud-awsプラグインをinstallします。
/usr/local/elasticsearch/bin/plugin install elasticsearch/elasticsearch-cloud-aws/2.4.2
#以下を最終行に追加
plugin.mandatory: cloud-aws
cloud:
aws:
access_key: アクセスキー
secret_key: シークレットキー
region: ap-northeast-1
discovery:
type: ec2
これでElasticsearchを再起動
2. リポジトリの作成
curl -XPUT http://localhost:9200/_snapshot/s3_repository -d '
{
"type": "s3",
"settings": {
"bucket": "バケット名",
"base_path": "パス"
}
}'
3. スナップショットをS3に作成
curl -XPUT http://localhost:9200/_snapshot/s3_repository/snapshot_1?wait_for_completion=true
4. AmazonESリポジトリの作成
curl -XPOST http://ESドメイン/_snapshot/s3_repository -d '
{
"type": "s3",
"settings": {
"access_key": "アクセスキー",
"secret_key": "シークレットキー",
"role_arn": "iamロール",
"region": "ap-northeast-1",
"bucket": "バケット",
"base_path": "パス"
}
}'
5. AmazonESにスナップショットのrestore
curl -XPOST http://ESドメイン/_snapshot/s3_repository/snapshot_1/_restore
注意点
Elasticsearchの公式ドキュメントではスナップショットのリストアはPUTメソッドで実行するサンプルになっていますが2015/10時点ではAmazonESにPUTリクエストができなかったのでPOSTメソッドを使ってリクエストしています。
移行してみて
やっぱ運用は楽です。
もともと検索エンジンど素人がEC2上で運用していたので、Logにエラーが吐かれたりするたびに調べてチューニングしていたりしたので、AWSに任せられるのは非常に大きいです。
要望があるとするとバージョンアップを早くしてほしい・・・いま、AmazonESのバージョンは1.5.2なんですが、mappingの変更けっこう大変なんで早くReindexが使えるようになりたい。
あと、デフォルトでkibanaもついてきますがkibana使ってるとけっこうScripts Fields使いたくなるケースがあるのでScripts Fieldsもいつかは使えるようにしてほしいな~