クラウドネイティブ アプリでの Elasticsearch

ヒント

このコンテンツは eBook の「Azure 向けクラウド ネイティブ .NET アプリケーションの設計」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。

Cloud Native .NET apps for Azure eBook cover thumbnail.

Elasticsearch は、さまざまな種類のデータに対する複雑な検索機能が有効になる分散検索および分析システムです。 オープンソースであり、広く普及しています。 次のような企業が Elasticsearch をアプリケーションにどのように統合しているかを検討してください。

  • Wikipedia: フルテキスト検索とインクリメンタル検索 (入力しながらの検索)。
  • GitHub: 800 万を超えるコード リポジトリのインデックス付けと公開。
  • Docker: コンテナー ライブラリを検出できるようにする。

Elasticsearch は、Apache Lucene フルテキスト検索エンジンの上に構築されています。 Lucene により、高パフォーマンスのドキュメントのインデックス作成とクエリ実行が提供されます。 逆インデックス スキームを使用してデータのインデックスが作成されます。ページをキーワードにマップするのではなく、本の最後にある用語集と同じように、キーワードをページにマップします。 Lucene には強力なクエリ構文機能があり、次の方法でデータを照会できます。

  • 用語 (完全な単語)
  • プレフィックス (単語の先頭)
  • ワイルドカード ("*" または "?" フィルターを使用)
  • フレーズ (ドキュメント内のテキストのシーケンス)
  • ブール値 (クエリを結合する複合検索)

Lucene によって検索のための低レベルの仕組みが提供され、Elasticsearch により Lucene を利用したサーバーが提供されます。 Elasticsearch によって、Lucene のインデックス作成および検索機能にアクセスするための RESTful API など、Lucene の操作を簡略化する、より高度な機能が追加されます。 また、大規模なスケーラビリティ、フォールト トレランス、高可用性を備えた分散インフラストラクチャ機能も提供されます。

複雑な検索要件を持つ大規模なクラウドネイティブ アプリケーションの場合、Azure の管理サービスとして Elasticsearch を利用できます。 Microsoft Azure Marketplace には、Azure で Elasticsearch クラスターをデプロイするために開発者が使用できる事前構成済みのテンプレートが用意されています。

開発者は、Microsoft Azure Marketplace から構成済みのテンプレートを使用して、Azure に Elasticsearch クラスターをすばやくデプロイできます。 Azure のマネージド オファリングを使用すると、最大 50 個のデータ ノード、20 個の調整ノード、3 個の専用マスター ノードをデプロイできます。

まとめ

この章では、クラウドネイティブ システムでのデータについて詳しく説明しました。 最初に、モノリシック アプリケーションでのデータ ストレージと、クラウドネイティブ システムでのデータ ストレージ パターンを比較しました。 クロスサービス クエリ、分散トランザクション、大量のシステムを扱うためのパターンなど、クラウドネイティブ システムに実装されているデータ パターンを見てきました。 SQL と NoSQL のデータを比較しました。 Microsoft 中心とオープンソースの両方のオプションを含む、Azure で利用可能なデータ ストレージ オプションについて説明しました。 最後に、クラウドネイティブ アプリケーションでのキャッシュと Elasticsearch について説明しました。

リファレンス