ニュース

ニュースに戻る

AWSにおけるElasticsearch

2021/06/23tech talk
作成者:briswell vietnam co ltd
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) ドメインの作成

1. https://aws.amazon.comへアクセスし、 Sign In to the Consoleを選択します。

2. Analyticsの下にElasticsearch Serviceを選択します。

3. Create a new domainを選択します。

4. Deployment typeDevelopment and testingを選択します。

5. Elasticsearch versionlatest versionを選択し、Nextを押下します。

6. ドメイン名を入力します。

7. Data nodesの下に、instance typet3.small.elasticsearchを選択し、Number of nodesでデフォルト値のままにします。

8. 他の設定を飛ばしてNextを押下します。

9. Network configurationPublic accessを選択します。

10. Fine-grained access controlEnable fine-grained access controlを外します。

11. Domain access policyCustom access policyを選択し、ドメインへアクセスできるようなIPアドレス若しくはIAM ARNを入力します。

12. 他の設定を飛ばしてNextを押下します。

13. 他のタグを飛ばしてNextを押下します。

14. 設定したドメイン構成を確認した上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ドメインの削除

1. Amazon Elasticsearch Serviceへログインします。

2. My domainsの下に、削除対象のドメインを選択します。

3. Actions を選択し、Delete domainを選択します。

参照元:

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html