AWSにおけるElasticsearch
Elasticsearchとは
- ElasticsearchはオープンソースのRESTful分散検索・分析エンジンであり、Apache Luceneを基盤として構築されています。
- 2010 年のリリース以来、Elasticsearchはすぐに最も人気のある検索エンジンとなり、ログ分析、フルテキスト検索、セキュリティインテリジェンス、ビジネス分析、およびオペレーショナルインテリジェンスのユースケースに広く使用されています。
Elasticsearchの仕組み
- API、あるいはLogstashやAmazon Kinesis Firehoseなどの取り込みツールを使用して、JSONドキュメントの形式でデータをElasticsearchに送信できます。
- Elasticsearchは自動的に元のドキュメントを保存し、そのドキュメントへの検索可能な参照をクラスターのインデックスに追加します。その後、Elasticsearch APIを使用してドキュメントの検索と取得ができます。
- オープンソースの可視化ツールであるKibanaとElasticsearchを併用してデータを可視化し、インタラクティブなダッシュボードを構築することもできます。
Elasticsearchの利用は無料?
- はい。Elasticsearchは無料のオープンソースのソフトウェアです。
- Elasticsearchはオンプレミス、Amazon EC2、またはAmazon Elasticsearch Serviceで実行できます。
- オンプレミスまたはAmazon EC2のデプロイでは、Elasticsearchやその他の必要なソフトウェアのインストール、インフラストラクチャのプロビジョニング、およびクラスターの管理はお客様の責任となります。
- 一方、Amazon Elasticsearch Serviceは完全マネージド型のサービスなので、ハードウェアのプロビジョニング、ソフトウェアのパッチ適用、障害復旧、バックアップ、モニタリングなどの時間のかかるクラスター管理タスクについて心配する必要はありません。
Elasticsearchの利点
- 高性能
- Elasticsearchは分散型であるため、大量のデータを並行して処理し、クエリに最適なものをすばやく見つけることができます。
- 簡単なアプリケーション開発
- Elasticsearchは、Java、Python、PHP、JavaScript、Node.js、Rubyなど、様々な言語をサポートしています。
- ほぼリアルタイムのオペレーション
- データの読み書きなどのElasticsearchオペレーションは、通常、完了までに 1 秒もかかりません。
- これにより、アプリケーションのモニタリングや異常検出など、ほぼリアルタイムのユースケースにElasticsearchを使用することができます。
- 無料ツールとプラグイン
- Elasticsearchは、一般的な可視化およびレポート作成ツールであるKibanaと統合されています。
- また、ソースデータを簡単に変換してElasticsearchクラスターにロードすることを可能にしつつ、BeatsとLogstashとの統合も提供します。
- 言語アナライザや言語サジェスタなど、オープンソースのElasticsearchプラグインをいくつか使用して、アプリケーションに豊富な機能を追加することもできます。
AWSでのElasticsearchの開始方法
-
ステップ1:Amazon Elasticsearch Service (Amazon ES) ドメインの作成
- https://aws.amazon.comへアクセスし、Sign In to the Consoleを選択します。
- Analyticsの下にElasticsearch Serviceを選択します。
- Create a new domainを選択します。
- Deployment typeでDevelopment and testingを選択します。
- Elasticsearch versionでlatest versionを選択し、Nextを押下します。
- ドメイン名を入力します。
- Data nodesの下に、instance typeでt3.small.elasticsearchを選択し、Number of nodesでデフォルト値のままにします。
- 他の設定を飛ばしてNextを押下します。
- Network configurationでPublic accessを選択します。
- Fine-grained access controlでEnable fine-grained access controlを外します。
- Domain access policyでCustom access policyを選択し、ドメインへアクセスできるようなIPアドレス若しくはIAM ARNを入力します。
- 他の設定を飛ばしてNextを押下します。
- 他のタグを飛ばしてNextを押下します。
- 設定したドメイン構成を確認した上Confirmを押下します 。なお、普通、新たなドメインの初期化は構成によって15分~30分かかる場合があります。
-
ステップ2:データのAmazon ESへのアップロード
- ケース1:単一のドキュメントをアップロードする場合、以下の通りになります。
- 以下のようにコマンドラインを利用します。
-
curl -XPUT 'domain-endpoint/users/_doc/1' -d '{"id": 1, "userName": "Nguyen Van A", "email": "test@gmail.com"}' -H 'Content-Type: application/json'
- 以下のようにPostmanを利用します。
- ケース2:複数のドキュメントをjsonファイルでアップロードする場合、以下のような情報でusers.jsonファイルを作成しておく必要があります。
-
{ "index" : { "_index": "users", "_id" : "2" } } {"id": 2, "userName": "Nguyen Van B", "email": "test+1@gmail.com"} { "index" : { "_index": "users", "_id" : "3" } } {"id": 3, "userName": "Nguyen Van C", "email": "test+2@gmail.com"}
- 以下のようにコマンドラインを利用します。
-
curl -XPOST 'domain-endpoint/_bulk' --data-binary @users.json -H 'Content-Type: application/json'
- 以下のようにPostmanを利用します。
-
ステップ3:Amazon ESでのドキュメントの検索
- usersドメインでデータをgmail.comキーワードで検索するため、以下の通りになります。
- 以下のようにコマンドラインを利用します。
-
curl -XGET 'domain-endpoint/users/_search?q=gmail.com&pretty=true'
- 以下のようにPostmanを利用します。
-
ステップ4:Amazon ESドメインの削除
- Amazon Elasticsearch Serviceへログインします。
- My domainsの下に、削除対象のドメインを選択します。
- Actions を選択し、Delete domainを選択します。
参照元:
https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html