Amazon Elasticsearch Serviceってなんだろ?

6 min read読了の目安(約6000字

Amazon Elasticsearch Serviceについて調べてみました。

Amazon Elasticsearch Service(Elasticsearchを簡単にデプロイ、保護、運用)| AWS

Elasticsearchが分かりませんが、まずは概要です。

概要

  • Elasticsearch を大規模かつ簡単でコスト効率の良い方法を使用してデプロイ、保護、実行する完全マネージド型サービス
  • 好きなツールを使用して、必要な規模でアプリケーションを構築、監視、およびトラブルシューティング
  • Elasticsearch API、マネージド Kibana、Logstash とその他の AWS サービスとの統合、組み込みのアラートと SQL クエリのサポートを提供
  • 従量課金制

メリット

  • デプロイと管理が簡単
    • Elasticsearch クラスターを数分でデプロイ
    • 組み込みのイベントモニタリングとアラート
  • 高度にスケーラブルで利用可能
    • 単一クラスターに最大 3 PB のデータを保存できる
    • 単一の Kibana インターフェイスを介して大規模なログ分析ワークロードを実行
    • クラスターを簡単にスケールアップまたはスケールダウン
    • マルチ AZ 配置を使用して高い可用性を確保
    • 同じリージョン内の 3 つのAZ間でデータをレプリケート
  • 高い安全性
    • VPC によるネットワーク隔離
    • KMS を使用して作成、制御するキーによる保存時または転送中のデータ暗号化
    • Cognito および AWS IAM ポリシーによる認証とアクセスコントロールの管理
    • 業界固有の要件または法規制要件にの適合を支援
  • 優れた費用対効果
    • オンデマンド料金
    • リザーブドインスタンス料金

ユースケース

  • アプリケーションのモニタリング
  • セキュリティ情報とイベント管理 (SIEM)
  • 検索
  • インフラストラクチャのモニタリング

Elasticsearchについて | Elastic

概要

  • 分散型で無料かつオープンな検索・分析エンジン
  • あらゆる種類のデータ、構造化データと非構造化データの双方に対応
  • Apache Luceneをベースに開発

ユースケース

  • アプリ検索
  • Webサイト検索
  • エンタープライズサーチ
  • ロギングとログ分析
  • インフラメトリックとコンテナー監視
  • アプリケーションパフォーマンス監視(APM)
  • 地理空間データ分析と可視化
  • セキュリティ分析
  • ビジネス分析

仕組み

  • データ投入
    • 生データをElasticsearchにインデックスする前に、パースして正規化し、エンリッチするプロセス
  • Elasticsearchにインデックスされたデータには、高度なクエリを実行したり、アグリゲーションを使用して複雑なデータのサマリーを取得可能
  • Kibanaを使ってデータをパワフルに可視化したり、ダッシュボードを共有できるほか、Elastic Stack全体の管理が可能

Elasticsearchインデックスとは?

  • 相互に関連付けられたドキュメントの集合
  • Elasticsearchは各種データをJSONドキュメントとして格納
  • 超高速の全文検索を実現する目的で開発された倒置インデックスと呼ばれるデータ構造を使用

Logstashは何に使うの?

  • 各種データを集計し、処理してElasticsearchに送ります
  • Logstashはオープンソースの、サーバーサイドデータ処理パイプライン
  • 複数のソースから同時にデータを取り込み、エンリッチ、変換してElasticsearchに送信できるようにする

Kibanaは何に使うの?

  • Elasticsearchのデータを可視化したり、管理を行うツール
  • ヒストグラムや線グラフ、円グラフ、マップなどをリアルタイムに作成

Elasticsearchを使う理由

  • 高速
    • 全文検索に優れた性能を発揮
    • ほぼリアルタイムの検索プラットフォーム
  • 分散設計
    • ドキュメントがシャードと呼ばれるコンテナーに分散して格納
    • ハードウェアの障害に、シャードは複製したコピーによる冗長化で対応
    • 多数のサーバーにスケールアウトさせることができ、ペタバイト規模のデータを扱う
  • 幅広い機能が内蔵
  • データ投入、可視化、レポート作成をシンプル化
    • BeatsやLogstashを併用して、Elasticsearchにインデックスする前段階のデータ処理を手軽に行う

Elasticsearchは無料?

  • SSPLまたはElastic Licenseのいずれのライセンスでも、無料かつオープンなElasticsearchの機能を無料で利用可能

Elasticsearchがサポートするプログラミング言語は?

  • Java
  • JavaScript(Node.js)
  • Go
  • .NET(C#)
  • PHP
  • Perl
  • Python
  • Ruby

ElasticSearchとは?基礎と使い方をわかりやすく解説!データベースとしてのメリットは?ダウンロード手順もご紹介 | A-STAR(エースター)

ElasticSearchの使いどころ

  • 様々な規模に拡張可能(検索トラフィック・データ量/書き込み速度)
  • 様々な種類のデータを横断して検索・分析可能
  • 様々な種類のデータ型・スキーマに対応可能
  • 高速なクエリ言語・クエリ実行・リアルタイム分析
  • 柔軟なデータモデル

基本概念

  • インデックス
    • データを保存する場所
    • RDBでいうテーブル
  • ノード
    • 個々のサーバー
  • クラスタ
    • ノードの集まり
  • シャード
    • ノードでデータを分割して保持
  • レプリカ
    • ノードにはシャードのレプリカが存在
    • プライマリのシャードが失われると新しくレプリカのシャードがプライマリとなる

ElasticSearchの特徴について

  • 全文検索
    • 全文検索エンジンとして、高い能力を発揮
    • 全文検索エンジンとは、大量にあるドキュメントデータの中から指定したキーワードを含むドキュメントデータを素早く検索するための仕組み
  • 高速検索処理
  • 多様なクエリに対応
  • スキーマレス
    • 事前のデータマッピング(スキーマ定義)を行わないでデータ投入を始められる
  • 可用性
  • スケーラビリティ

AWS再入門 Amazon Elasticsearch Service編 | DevelopersIO

Elasticsearchとは

  • ApacheプロジェクトのLucene(全文検索エンジン)をベースとしたOSSの検索・分析ソフトウェア
  • 高い拡張性・可用性を提供
    • Shardという単位でデータを保持
    • Shardを複数のノードに分散して保持
    • 分散処理により高負荷な環境でもスケールすることでボトルネックへの対策が可能
    • Master Node / Data Node / Client Node / Tribe NodeといったNodeTypeがある
    • 利用用途に応じて役割を分けることで負荷低減、パフォーマンス向上が可能
    • Shardはレプリカを持つことができる
    • 異なるノードへレプリカを保持
    • ノードがダウンした場合もレプリカが昇格
  • スキーマレス
    • ドキュメント指向のスキーマレスモデル
    • JSON形式でデータを渡すことでElasticsearchが解釈し、スキーマ構造を定義(Dynamic Mapping)
    • テンプレート機能を利用すれば、事前にインデックス/タイプにスキーマ定義することも可能
  • RESTful APIによる操作
    • RESTfulに則ったAPIで操作が可能
    • INPUT/OUTPUTがJSON形式ですのでシステムに組み込みやすい
  • 豊富な検索オプション
    • Aggregationを利用した集計
    • IPアドレスから位置情報を取得
    • 座標から距離を計算
  • 素敵な周辺ツール
    • Logstash
      • ログ処理ツール
    • Kibana
      • Elasticsearchのデータを可視化/分析するツール
    • Beats Platform

Amazon Elasticsearch Serviceの特徴

  • AWSマネージドサービス
  • 画面操作、APIによるデプロイ、スケール
    • マネジメントコンソールから数クリックするだけでデプロイ
    • awscliなどのAPIを活用すればコマンドワンライナーでデプロイすることが可能
    • OS、アプリケーションのインストール、設定が不要
    • APIによりスケールアップ、スケールアウトが可能
  • 自由度の高い構成設定
    • ElasticsearchのMaster Node / Data Nodeを任意のインスタンスタイプ、インスタンス数で指定
    • Master Node / Data Nodeを分けずに同居させることも可能
    • ReplicaシャードをMultiAZで持つことができ、AZレベルの障害にもアプリケーションを継続可能
  • 障害の自動検出、ノード交換
    • ノードの監視はAWSが担当
    • ノードに障害が発生した場合、AWSが新しいノードと差し替え
  • 自動スナップショット
    • 毎日指定した時間にスナップショットを取得
    • スナップショットはユーザー管理外の領域に取得され、ユーザーの操作ではリストアは不可
    • 手動スナップショットも可能
  • CloudWatchによるリソースモニタリング、イベント監視
  • IAMポリシーによるアクセス制御
    • IPアドレスによる制御
    • IAM User / IAM Roleによる制御
    • リソースベースの制御
  • CloudWatch Logsとの連携
    • CloudWatch Logsへ出力されたログメッセージをCloudWatch LogsがLambda Functionへプッシュし、Elasticsearch ServiceへINPUT
    • Lambda FunctionのソースコードはAWSが用意していて、自動生成される
    • テキスト形式でもログのメッセージフォーマットが決まっていれば、CloudWatch LogsからElasticsearch Serviceへ転送する上ではノーコーディング

コンソール

まとめ

今回はAmazon Elasticsearch Serviceについて調べてみました。
以下がポイントでした。

  • Elasticsearch を大規模かつ簡単でコスト効率の良い方法を使用してデプロイ、保護、実行する完全マネージド型サービス
  • デプロイと管理が簡単
  • スケーラブル
  • 高い安全性
  • Elasticsearchは分散型で無料かつオープンな検索・分析エンジン
  • 検索や分析に使用
  • 全文検索エンジンとは、大量にあるドキュメントデータの中から指定したキーワードを含むドキュメントデータを素早く検索するための仕組み
  • Logstashはログ処理ツール
  • KibanaはElasticsearchのデータを可視化/分析するツール

参考になれば幸いです。