ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

Amazon Elasticsearch Serviceについて

f:id:kitahara-fv:20180618115756p:plain

みなさん、こんにちは。ソリューション技術部 北原です。

今回は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のサービス画面に移動。

[新しいドメインの作成]をクリック。 f:id:kitahara-fv:20180614172040p:plain

step 1:ドメインの定義

ドメインの定義の画面にて、 [Elasticsearchドメイン名]を入力し、[次へ] f:id:kitahara-fv:20180614172042p:plain

step 2:クラスターの設定

クラスターの設定画面に各種ノードやストレージ設定があります。

今回は最小構成なので、インスタンスタイプを[t2.small.elasticsearch]に変更し、[次へ] f:id:kitahara-fv:20180614172045p:plain

step 3:アクセスの設定

アクセス設定でアクセス先(文書保存)のEC2インスタンスがあるVPC、サブネットを選択し、 セキュリティグループもアクセス可能なものを選択し、[次へ] f:id:kitahara-fv:20180614172047p:plain

step 4:確認

確認画面でこれまでの設定を確認し、[作成] f:id:kitahara-fv:20180614172049p:plain

完成!

ものの5分もかからずに作成出来た! f:id:kitahara-fv:20180614172051p:plain

利用方法

ドメイン作成後、動作確認の為にまずKibanaにアクセスします。 f:id:kitahara-fv:20180614182921p:plain

※Kibanaについての詳細はOSS×Cloud Newsの以下の記事をご参照下さい

www.ossnews.jp

リンクをクリックするとKibanaのダッシュボードが表示されます。 f:id:kitahara-fv:20180614182929p:plain

まだデータが無いので、ドキュメントを投入していきます。

ドキュメント登録

公式ドキュメントにあるサンプルデータを投入してみます。

# 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でも登録されたデータの確認をしてみます。 登録された映画のドキュメントデータが投入されていることが分かります。

f:id:kitahara-fv:20180615130624p:plain

サーチ機能

サーチ機能の動作も確認する為、 追加で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して検出する事が出来ました。 f:id:kitahara-fv:20180615130636p:plain

最後に

いかがでしたでしょうか。

今回はAmazon Elasticsearch Serviceの利用開始方法とデータ投入、Kibanaによるデータ確認をお届けしました。

弊社ではデータ分析基盤ではSplunkをメインに提案しておりますが、AWS環境をご利用のお客様に対しては 併せてAmazon Elasticsearch Serviceのご提案も視野に入れて今後も活動していきたいと考えております。

以上となります。