こんにちは。
Web・iOSエンジニアの三浦です。
今回は、AWSのサービスの一つで、マネージドなElasticsearchを提供してくれているAmazon Elasticsearch Serviceを触ってみたので、その内容や感想などを述べていこうと思います。
2019/02/28時点での情報です。
スクショのみ新しく撮り直しています。
はじめに
うちの会社ではSolrをVMに載せて使っているのですが、VMの保守期限が切れるため、移行が必要になりました。
当初は同じくSolrをどこかで使おうと思っていたのですが、せっかくなので最近よく聞くElasticsearchを使ってみることにしました。
また、正直もう保守の面倒も見たくないということで、マネージドなサービスを使おうと考え、選択肢の一つとしてAWSがマネージドで提供しているAmazon Elasticsearch Serviceに白羽の矢を立てて使ってみました。
(なおこちら Elastic Cloud 編です)
Amazon Elasticsearch Service とは
Amazon社が運営するクラウドサービスです。
Elasticsearchをクラウドで提供するサービスには、Elasticsearchを作っているElastic社が提供するElastic Cloudというものがありますが、それとは異なり公式運営ではないため、最新のバージョンがすぐに使えるわけではなかったり、一部のプラグインの使用などに制限があります。
一方で、AWSの他のサービスとの連携がしやすかったり、今までAWSを使っていた人にはわかりやすいという利点があります。
最近はリザーブドインスタンスで使用できるようになり、料金がさらに安くなりました。
使用にはAWSアカウントが必要です。
使い方
アカウント作成
Amazon Elasticsearch Serviceを使うにはAWSアカウントが必要です。作成しましょう。
デプロイメント
Elasticsearchのインスタンスを作成します。
CLI上でも可能ですが、今回はブラウザ上でGUIで作成する方法を紹介します。
細かい設定も可能ですが、最低限使えるようにする設定だけであれば非常に簡単です。
作成画面へ行くまで
AWS マネジメントコンソール画面からElasticsearch Serviceを選択します。
Amazon Elasticsearch Sevice画面にて、「新しいドメインの作成」を選択します。
ドメインとは、Elasticsearchの実行に必要なリソースのコレクションです。
なお「リザーブドインスタンスの購入」では、予めインスタンスを年単位で安く購入することができます。
作成画面(デプロイタイプの選択・バージョン指定)
デプロイタイプとバージョンを指定します。
検証用に作成するのであれば、デプロイタイプは「開発およびテスト」、バージョンは最新で良いでしょう。
作成画面(ドメインの設定)
ドメイン名、インスタンスやストレージのタイプ、スナップショット等、ドメインの設定をします。
インスタンスやストレージなどは料金に直結するので、求めるスペックと料金表を比較しながら選びましょう。
その他の設定は、試してみるだけならデフォルトでも構わないと思います。
作成画面(アクセス設定)
ドメインへのアクセスの制御をします。
検証であれば、設定が簡単なパブリックアクセス + 特定IPの許可でいいかと思います。
最後に確認画面で確認してからボタンを押すと、インスタンスが作成されます。
またこれらの設定は、インスタンス作成後にも変更できます。
デプロイメント完了後
デプロイメントが完了すると、Amazon Elasticsearch Serviceの各機能が使えるようになります。
おおよそボタン・タブにかかれている通りですが、コンソール上でindexを作る・データを入れるなどするときは、概要の「Kibana」のURLからKibanaコンソールへ飛び、そこで操作すると良いです。
ちなみに設定を変更する際は、青い「クラスターの設定」ボタンから設定ページに飛ぶことができます。
(最初そのボタンが今の画面のことを指していると勘違いし、かなり詰まりましたw)
Kibanaコンソール
Kibanaのコンソールです。
コンソール上からデータを入れるなどしたいときは、「Dev Tools」を使うと良いでしょう。
日本語全文検索設定
日本語の全文検索をする際は、ICU、Kuromojiと呼ばれるライブラリを設定・導入する必要がありますが、Amazon Elasticsearch Serviceはデフォルトでそれらのプラグインをサポートしているため、プラグインの導入の必要はありません。
所感
良かった点
デプロイメントが楽
必要な情報をボタンやプルダウン、ちょっとしたテキストによって入力するだけで、すぐにインスタンスを作成できました。
細かくインスタンスの設定ができる
上限・下限はありますが、ストレージサイズを1GB単位で設定できるなど、細かくインスタンスのサイズなどを設定できます。
日本語での設定の際、プラグイン追加の手間がない
ICU、Kuromojiがデフォルトでサポートされているため、追加で導入する必要がありません。
コンソールが日本語でわかりやすい
Kibanaは英語ですが、Elasticsearch Serviceのコンソールは日本語のためとっつきやすいです。
アクセスコントロール設定が楽
コンソール上でアクセスコントロールの設定されており、簡単に設定できました。
ただし、凝ったことをする場合は、AWSのアクセスコントロールについて理解しておく必要があります。
他のAWSサービスと簡単に連携できる
CloudWatch、IAMなど、AWSの他のサービスと簡単に連携できます。
それぞれが使いやすく、またAWSの他のサービス使用時にも応用できたり、予め知識があれば使用できます。
いまいちな点
最新バージョンが使用できない場合がある
公式サポートでないこともあり、最新バージョンが使用できないことがあります。
Elastic社の他のツールがサポートされていない
Logstashなどのツールについては一緒にはサポートされていないため、使いたければ別途サーバなどを立てて自分で入れるなりする必要があります。
おわりに
アクセスコントロールを含むインスタンスの作成が非常に簡単で、Elasticsearchを試しに使ってみるのであればAmazon Elasticsearch Serviceを使ってみるのはとてもアリな選択肢だと感じました。
また予めAWSを導入しているのであれば、AWSの他のサービスと簡単でセキュアに連携できますし、CloudFormationが使えるなどAWSの知見が使用できるので、そういう意味でもとても良いサービスなのではないでしょうか。