Amazon Elasticsearch ServiceとAmazon CloudSearchの主に機能面の違いについて
はじめに
Amazon Elasticsearch ServiceとAmazon CloudSearchは、AWSクラウドでの検索エンジンに関するサービスという点で共通しているため、どちらを使うべきか悩むことはないでしょうか。そこで本記事では、Amazon Elasticsearch ServiceとAmazon CloudSearchの概要を紹介した後に、主に機能面に関する違いをいくつか紹介します。
Amazon Elasticsearch Serviceとは
Amazon Elasticsearch Serviceは、AWSクラウドで、オープンソースの分散型RESTful検索および分析エンジンであるElasticsearchを、大規模かつ簡単にデプロイ、保護、実行するフルマネージド型サービスです。主なElasticsearchのユースケースは、ログ分析や全文検索、セキュリティインテリジェンス、ビジネス分析などが挙げられます。Amazon Elasticsearch Serviceには、その他のAWSサービスに加え、Kibana、Logstashなどのツールもサポートしています。
Amazon CloudSearchとは
Amazon CloudSearchは、AWSクラウドで、ウェブサイトやアプリケーション向けの検索ソリューションを設定、管理、スケーリングするフルマネージド型サービスです。34言語をサポートし、ハイライト表示や、地理空間検索などの機能を備えています。Amazon CloudSearchの利用方法は簡単です。検索インデックスのデプロイまでの流れを以下に示します。
- AWSマネジメントコンソールから数回のクリックで検索ドメインを作成する
- 検索対象にするデータをアップロードする
- Amazon CloudSearchが自動的に必要なリソースをプロビジョニング
- 高度に調整された検索インデックスをデプロイ
検索パラメータの変更も容易で、検索の関連性を詳細に調整して、新しい設定を適用できます。また、データやトラフィックの変動に応じて、シームレスにスケールアップ / ダウンを自動的に行います。
Amazon Elasticsearch Service とAmazon CloudSearchの違い
Amazon Elasticsearch Service とAmazon CloudSearchでは、検索エンジンをベースとしたサービスという点で共通していますが、それぞれ異なる特徴があります。以下では、主に機能面の違いについて紹介します。
カスタマイズ性について
Amazon Elasticsearch Service
Amazon Elasticsearch Service は、文章内からキーワードの検索を行うといった簡単なものであっても、設計する必要があります。しかし、その検索精度は、N-Gram方式などの別の言語処理を設計し適用することで向上させることができます。
Amazon CloudSearch
Amazon CloudSearchは、ウェブサイトやアプリケーション向けのサービスで、必要な機能セットが既に用意されているため、ほとんど設計の必要がありません。例えば、日本語の文章内からキーワードを検索する場合、フィールドの言語処理オプションを日本語にするだけです。
データの取り込みについて
Amazon Elasticsearch Service
Amazon Elasticsearch Service ドメインにデータを取り込む方法は、複数あります。
- Amazon Kinesis Firehose - Amazon Kinesis Firehoseはデータスループットに応じて自動的にスケールされ、継続的な管理が不要なフルマネージド型サービスです。大量のデータの取り込みが必要なユースケースの場合に最適です。取り込む前にデータの変換やバッチ設定、圧縮を行うこともできます。
- Logstash - Amazon Elasticsearch Service ドメインでは、Logstash実装からのすべてのログに対応するデータストアとして構成できます。また、Logstashの組み込みフィルターのライブラリーサポートにより、パターンマッチングによる非構造化ログデータの解析と構造化データへの変換、削除、変更、メトリクス収集などの、一般的な変換処理を簡単に実行できます。
- API - インデックスやBulk APIなどのネイティブ Elasticsearch APIを使用して、データをAmazon Elasticsearch Service ドメインに取り込むことができます。
Amazon CloudSearch
Amazon CloudSearchの検索ドメインにデータを取り込むには、事前にデータをJSONもしくはXML形式にフォーマットしておく必要があります。これらのデータはドキュメントバッチとして、アップロードします。アップロードが完了すると、検索ドメインのインデックス作成オプションに従って、データのインデックスが自動的に作成されます。アップロードに使用できるツールは、次のものがあります。
AWSマネジメントコンソール、AWS SDK、AWS CLI
バックアップ
Amazon Elasticsearch Service
Amazon Elasticsearch Serviceでは、スナップショットによってインデックスと状態のバックアップを行います。スナップショットには次の2つのいずれかで取得できます。
- 自動スナップショット - クラスターの復元専用です。追加料金足でスナップショットが定期的に実行され、事前に設定したAmazon S3バケットに保存されます。その頻度は、ドメインで実行しているElasticsearch のバージョンによって異なります。「Elasticsearch 5.3 以降」では、1時間ごとで最大336個のスナップショットを取得し、14日間保持します。「Elasticsearch 5.1 以前」では、指定した時間に1日ごとで最大14個のスナップショットを30日間保持します。
- 手動スナップショット - クラスターの復元だけでなく、クラスター間のデータの移行にも使用されます。スナップショットは独自のAmazon S3バケットに保存され、標準のAmazon S3料金が適用されます。
インデックスやスナップショットの管理にはCuratorを使用することができ、複雑なクラスターでの管理を簡素化してくれます。
Amazon CloudSearch
Amazon CloudSearchでは、サービス自体で全体のバックアッププロセスを自動的に処理します。バックアップインデックスから手動で復元アクティビティを実行する必要はありません。
上記の他に、2つのサービスには次のような特長があります。
- Amazon Elasticsearch Service - 一般的なデータ型はもちろん、ネストされたオブジェクト型や親子関連のインデックスをサポートしており、一つのデータに対して複数の関連情報を正確にフィルタリングできます。
- Amazon CloudSearch - データ量や検索トラフィックに対して、自動的にスケーリングしてくれるため、システムの運用負荷を小さくできます
まとめ
本記事では、検索エンジンに関するサービスとして共通するAmazon Elasticsearch Service とAmazon CloudSearchを、主に機能面に焦点を当てた相違点について紹介をしました。
Amazon Elasticsearch Service は設計などをはじめとする、作業を必要としますが、その分、データの取り込み方法は多様で、検索精度の向上も可能です。一方、Amazon CloudSearchは、ウェブサービスやアプリケーション向けの検索エンジンに関するフルマネージド型サービスで、カスタマイズ性は低いですが、運用が簡単です。そのため、ユースケースなどを基にして、両サービスを使い分けてみてはいかがでしょうか。