みなさん、こんにちは。ソリューション技術部 北原です。
今回はAWSで利用出来る「Amazon Elasticsearch Serviceについて」の記事となります。
概要
AWSでは全文検索マネージドサービスとして、「Amazon CloudSearch」と「Amazon Elasticsearch Service(以下、Amazon ES)」 の2つのサービスを提供しています。
CloudSearchはオープンソースソフトウェア(以下、OSS)の検索ソフト「Apache Solr」がベースでAmazon ESは OSS「Elasticsearch」をベースとしていますが、検索エンジンそのものはどちらも「Apache Lucene」という 検索エンジンを使用しているため、検索機能のみに関してはそこまで違いはありません。
最大の違いは、CloudSearchが検索機能だけを持つシンプルなサービスであるのに対して、Amazon ESは検索機能 だけではなく、グラフ描画などの分析、可視化機能も備えています。 Amazon ESの分析・可視化機能はElasticが開発する「Kibana」というOSSを利用しており、 検索ソフトと可視化ソフトをセットにしたサービスとなっています。
オンプレミスでのElasticsearchとの違いは、KibanaやLogstashなどを別に用意する必要があるのに対して、 全て1つのサービスとして提供していることになります。 ElasticStackの構成が1つのサービスとなっていると考えるとわかりやすいかと思います。 (ElasticStackの詳細につきましては弊社佐藤が記述した”全文検索エンジン「Elasticsearch」を触ってみた”をご参照ください)
準備
実際にAmazon Elasticsearch Serviceを利用する為にドメインを作成します。
まずはAmazon Elasticsearch Serviceのサービス画面に移動。
[新しいドメインの作成]をクリック。
step 1:ドメインの定義
ドメインの定義の画面にて、 [Elasticsearchドメイン名]を入力し、[次へ]
step 2:クラスターの設定
クラスターの設定画面に各種ノードやストレージ設定があります。
今回は最小構成なので、インスタンスタイプを[t2.small.elasticsearch]に変更し、[次へ]
step 3:アクセスの設定
アクセス設定でアクセス先(文書保存)のEC2インスタンスがあるVPC、サブネットを選択し、 セキュリティグループもアクセス可能なものを選択し、[次へ]
step 4:確認
確認画面でこれまでの設定を確認し、[作成]
完成!
ものの5分もかからずに作成出来た!
利用方法
ドメイン作成後、動作確認の為にまずKibanaにアクセスします。
※Kibanaについての詳細はOSS×Cloud Newsの以下の記事をご参照下さい
リンクをクリックするとKibanaのダッシュボードが表示されます。
まだデータが無いので、ドキュメントを投入していきます。
ドキュメント登録
公式ドキュメントにあるサンプルデータを投入してみます。
# curl -XPUT https://XXXXXX/1 -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson", "Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' -H 'Content-Type: application/json'
ドキュメント取得
登録したドキュメントを取得します。
# curl search-kitahara-es2-XXXX/movies/movie/1 {"_index":"movies","_type":"movie","_id":"1","_version":1, "found":true,"_source":{"director": "Burton, Tim", "genre" : ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson", "Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}
Kibanaでのデータ確認
Kibanaでも登録されたデータの確認をしてみます。 登録された映画のドキュメントデータが投入されていることが分かります。
サーチ機能
サーチ機能の動作も確認する為、 追加で1件データ投入をします。
# curl -XPUT https://XXXX/movies/movie/2 -d '{"director": "Jean-Pierre Jeunet", "genre": ["Love-Story"], "year": 2018, "actor": ["Mayu Watanabe"], "title": "Ameri"}' -H 'Content-Type: application/json'
投入後、サーチ画面にて、[mayu]と入力すると以下のデータのみhitして検出する事が出来ました。
最後に
いかがでしたでしょうか。
今回はAmazon Elasticsearch Serviceの利用開始方法とデータ投入、Kibanaによるデータ確認をお届けしました。
弊社ではデータ分析基盤ではSplunkをメインに提案しておりますが、AWS環境をご利用のお客様に対しては 併せてAmazon Elasticsearch Serviceのご提案も視野に入れて今後も活動していきたいと考えております。
以上となります。