1. ElasticSearchの概要
1.1 はじめに
ES と呼ばれる Elaticsearch は、オープンソースで拡張性の高い分散型 RESTful スタイルの全文検索エンジンであり、Elastic Stack テクノロジー スタック全体の中核となります。ほぼリアルタイムでデータを保存および取得でき、非常に拡張性があり、数百台のサーバーに拡張して PB レベルのデータを処理できます。
Elastic Stack テクノロジー スタックには、Elasticsearch、Kibana、 Beats 、 Logstash が含まれます。
保存されたデータを検索するための Elasticsearch
Kibana はデータの表示に使用されます
1.2 全文検索エンジン
Google や Baidu などの Web サイト検索はすべて、Web ページ内のキーワードに基づいてインデックスを生成します。検索時にキーワードを入力すると、そのキーワードに一致するすべての Web ページ、つまりインデックスが返されます。一般的なプロジェクトもあります。アプリケーション ログの検索もっと。これらの非構造化データ テキストの場合、リレーショナル データベース検索は十分にサポートされていません。
一般に、データ インベントリのテキスト フィールドを使用する人は誰もいないため、従来のデータベースでの全文検索は非常に役に立ちません。全文検索ではテーブル全体をスキャンする必要があるため、データ量が多い場合はSQL構文を最適化してもあまり効果がありません。インデックスは確立されますが、維持が非常に面倒で、挿入および更新操作のためにインデックスが再構築されます。
したがって、次のシナリオで従来の検索方法を使用する必要がある場合、パフォーマンスが非常に消費されます。
- 検索されるデータ オブジェクトは、大量の非構造化テキスト データです。
- ファイル レコードの数は、数十万または数百万、あるいはそれ以上に達します。
- 幅広い対話型のテキストベースのクエリをサポートします。
- 非常に柔軟な全文検索クエリが必要です。
- 関連性の高い検索結果に対する特別なニーズがありますが、利用可能なリレーショナル データベースではそれを満たすことができません。
- さまざまなレコード タイプ、非テキスト データの操作、または安全なトランザクション処理に対する要件が比較的少ない状況。
ここでいう全文検索エンジンとは、現在広く使われている主流の検索エンジンを指します。その動作原理は、コンピュータのインデックス作成プログラムが記事内の各単語をスキャンし、各単語のインデックスを構築し、記事内の単語の数と位置を示すことです。ユーザーがクエリを実行すると、検索プログラムは事前に確立されたインデックスを使用します。メソッドを検索し、検索結果をユーザーにフィードバックします。このプロセスは、辞書の検索語リストから単語を検索するプロセスに似ています。
1.3 ルシーン
Luceneは、Apache Software Foundation の Jakarta プロジェクト チームのサブプロジェクトで、全文インデックス作成と検索を実行できる、シンプルだが強力なアプリケーション プログラミング インターフェイスを提供します。Lucene は、 Java 開発環境における成熟した無料のオープン ソースツールです。Lucene 自体は、現在も今後も近年最も人気のある無料の Java 情報検索ライブラリです。ただし、Lucene は全文検索機能ライブラリを提供するコア ツールキットにすぎず、実際に使用するには完全なサービス フレームワークを構築して適用する必要があります。
Elasticsearch は Lucene に基づいて構築されており、検索エンジン サービス ソフトウェアを独立して展開および起動できます。
1.4 適用事例
- GitHub: 2013 年初頭に、Solr は廃止され、ペタバイト レベルの検索には Elasticsearch が使用されました。「GitHub は Elasticsearch を使用して、13 億のファイルと 1,300 億行のコードを含む 20 TB のデータを検索します。」
- Wikipedia: Elasticsearch に基づいたコア検索アーキテクチャの開始
- Baidu: Elasticsearch は現在、テキスト データ分析に広く使用されています。すべての Baidu サーバー上のさまざまな指標データとユーザー定義データを収集します。さまざまなデータの多次元分析と表示を通じて、インスタンスの異常やビジネス レベルの特定と分析を支援します。異常。現在、Baidu 内の 20 以上のビジネス ライン (クラウド分析、ネットワーク アライアンス、予測、ライブラリ、直接アカウント、ウォレット、リスク管理など) をカバーしており、単一クラスターには最大 100 台のマシンと 200 台の ES ノードが含まれます。毎日 30TB 以上のデータがインポートされます。
- Sina: Elasticsearch を使用して、32 億のリアルタイム ログを分析および処理します。
- Alibaba: Elasticsearch を使用してログ収集および分析システムを構築します。
- Stack Overflow: バグの問題を解決するための Web サイト (すべて英語)、プログラマーがコミュニケーションを図るための Web サイト
参考
[シリコンバレー] ElasticSearch の入門から習得までのチュートリアル (ELK テクノロジー スタック elasticsearch 7.x+8.x の新機能に基づく)