DUICUO

このガイドは、面接で重要な質問を理解し、Elasticsearch についての理解について説明するのに役立ちます。

ファンからコメントでESについての動画を作ってほしいとリクエストがありました。今日はESについての私の考えを共有したいと思います。

1. ESとは何ですか?

ESはElastic Searchの略で、全文検索エンジンライブラリLuceneをベースに構築されたオープンソースの検索・分析エンジンです。ESは分散ストレージと高速な検索速度を特徴としており、全文検索機能の実装によく使用されます。

公式 Elastic ドキュメントでは、Elasticsearch は単一のコンポーネントとして定義されなくなり、Elastic Stack エコシステムとして定義されるようになりました。

Elastic Stackは主にElasticsearch、Logstash、Kibanaで構成されており、ELKとも呼ばれる定番の組み合わせです。Elasticsearchは主にデータストレージ、Logstashはデータ収集、Kibanaはデータ可視化に使用されます。

ElasticsearchはElasticsearchの中でもより広く使用されているため、以下で説明するElasticsearchはElasticsearchを指します。例えば、ウェブサイトの検索、ログの集約と取得はいずれもテラバイト規模のデータを扱うため、Elasticsearchは最適な選択肢となります。

2. ES はなぜこんなに速いのですか?

ES が非常に高速である主な理由は次の通りだと考えています。

1. Elasticsearch (ES) は、Lucene をベースに構築された全文検索エンジンです。Lucene は大量のインデックスデータの管理に優れており、さらに、インデックスを保存する前にデータを単語に分割します。これにより、データ検索の効率が向上します。

2. Elasticsearchは転置インデックスを使用します。転置インデックスとは、属性値を使用してデータレコードの位置を決定するインデックスであり、これによりテーブル全体のスキャンの問題を回避できます。

3. ES はシャーディング メカニズムを使用してデータを保存します。

4. Elasticsearch (ES) は優れたスケーラビリティを備え、水平スケーリングによる動的なノード追加をサポートし、処理性能を向上させます。数百のサーバーノードへの拡張をサポートし、テラバイト単位の構造化データと非構造化データを処理できます。

5. Elasticsearch が提供するデータ集約機能とインデックスライフサイクル管理機能により、データの効率的な保存と取得が容易になります。

3. ES アプリケーションガイド

もちろん、Elasticsearchは万能薬ではありません。不適切な使用はパフォーマンスのボトルネックにつながる可能性があります。複雑な結合クエリはElasticsearchのパフォーマンスに大きな影響を与えるため、一般的には推奨されません。

さらに、深いページネーションクエリは避けるべきです。Elasticsearchのページネーションは「from」と「size」パラメータを使用して実装されているためです。つまり、クエリ実行中、各シャードはまず長さ「from + size」の優先キューを構築し、それをゲートウェイノードに送り返す必要があります。ゲートウェイノードはこれらの優先キューをソートし、適切なサイズのドキュメントを見つけます。「from」が十分に大きい場合、OutOfMemoryError(OOM)が発生し、ネットワークパフォーマンスが低下する可能性があります。

これが私のESについての理解です。