ES弾性検索では、次の表
0 のGithub
1つの顔の質問
ESの分散アーキテクチャの原則についてのトーク
2つのテストサイト分析
この検索では、Luceneの最も人気のある検索ライブラリ一度。
業界では一般的に数年を依頼する前に、あなたはそれをLuceneを知っていますか?あなたは転置インデックスの原則にそれを知っていますか?
ElasticSearch -しかし、今、今、基本的にはプロジェクトベースの分散Lucene検索エンジンので、質問しません。
検索は現在、基本的なインターネットは特に人気があり、標準的なシステムは、一般的な使用Solrのために数年前に、ESであるとなっている分散します。しかし、最近では、企業やプロジェクトの実質的な大多数は、ESを回っています。
だから、インターネットのインタビュー、分散型検索エンジンは確かに我々は確かにESに話をします、あなたと話します!
インタビュアーが最初にあなたに質問をする場合、通常はそれについての私達に伝えることができる分散アーキテクチャをESを尋ねるのですか?あなたに分散検索エンジンアーキテクチャの基本的な理解をご覧ください。
3件のコメント
ESの設計思想は、検索エンジンを配布されますが、それはまだで、基礎となるLuceneをベースにしています。核心思想
それは、複数のマシン上で構成されるESクラスタをマルチESインスタンスのプロセスを開始することです。
3.1基本的な単位
データが格納ES 基本单位
れるインデックス化は。
たとえば、今、あなたはESデータに注文数を格納したい、あなたはESにインデックスを作成する必要がありorder_idx
、すべての注文データがインデックスに書き込まれます。
概念的なインデックスでは、ほとんどのMySQLのと同じです表インチ
index -> type -> mapping -> document -> field。
3.2例
理解を容易にするために、私は類推するここです。覚えている、唯一のアナロジー!絶対に等しいです!
インデックス内のMySQLはテーブルに対応し、
とMySQLを使ったタイプ類推は行くことができない、
あなたは複数のタイプを持つことができますインデックスは、フィールドの各タイプが似ている、若干の違いがあります。
受注指数、専門の格納順序データを仮定します。
あなたは、MySQLのテーブルを構築するというような
- いくつかの受注は、そのような衣服、靴など物理的な商品の受注、あります
- いくつかの受注は、ゲームカード、プリペイド再充電などの仮想グッズ、受注しています
2ご注文のフィールドは同じですが、フィールドの小さな部分がわずかに異なっている残っています。
同様に、ESは順序インデックスでは、2つのタイプが構築されます
- これは、物理的な財受注のタイプです
- これは、仮想財受注のタイプです
2つのほとんどのタイプフィールドは、フィールドの小さな部分が同じではありませんが、同じです。
多くの場合、インデックスはおそらくタイプだったが、それは、インデックスの例複数の種類がある場合と言うん
mapping types
この概念は完全に基づいて詳細に説明し、ElasticSearch 7.Xを削除された公式文書
あなたは、MySQLのテーブルを表し、各タイプのための特定、カテゴリインデックステーブルと考えることができます。
各タイプは、マッピングを持ち、テーブルの特定のタイプを想定し、インデックスが属するタイプのより多くを表しタイプ、およびマッピング、このタイプのあるテーブル定義構造。
あなたはどのようなフィールドを持つテーブル構造を定義するようにしてください、MySQLでは、テーブルを作成し、各フィールドがどのようなタイプである。
実際には、あなたは内部に入力するための指標データの書き込み、文書と呼ばれる、
行のMySQLへの同様のテーブルに文書、
各文書の複数のフィールドと、
各フィールドは、文書内のフィールドの値を表します。
3.3構造原理
あなたは、インデックスが複数に分割ターンであり、インデックスを構築するshard
各シャードデータ記憶部。
シャードを複数に分割することは有利です。
- 水平方向の拡張サポートしてい
ます3T、3のGeシャードは、各シャードの1T上のデータは、今4Tにデータ量の増加は、どのように拡張した場合、このようなデータの量などを、?
とても簡単!4シャード新しいインデックス、データのインポート
- パフォーマンスの向上
、すなわち、複数のシャード、複数のサーバー間でデータを、すべての操作は、システムのスループットと性能を向上させる、複数のマシンに分散並行して行われます。
それぞれが、つまり、複数のバックアップを持っているそして、このデータのシャードは、実際にされshard
ているprimary shard
データを書き込むための責任を、いくつかがありますreplica shard
。primary shard
データを書き込んだ後、データは他のいくつかに同期されますreplica shard
真ん中。
レプリカ方式で、各シャードは、複数のデータのバックアップを持っている
ノードがダウンした場合でも、同様に他のノード上のデータは、高可用性を満たすために。
3.4主な特徴
クラスタのES複数のノードは、ノードが自動的にマスターノードとして選出されます。
マスターノードは、このような、インデックス・メタデータを維持し、スイッチングなどの一部の管理業務を担当して primary shard
および replica shard
ようにアイデンティティと、
マスターノードがダウンした場合、それはノードがマスターで再選出されます。
そうでない場合は、マスターノードがダウンした上で、マスターノードは、ノードがダウンしている可能 primary shard
他の利用可能なノードに転送アイデンティティreplica shard
。
あなたがダウンしているノードを修正する場合はその後、再起動、マスター制御ノードが失われます replica shard
背中の割り当てを、そして、なるようにクラスタが正常に戻ってデータのクラス同期の後続の変更、。
更简单点,若某非 master 节点宕机了,那么该节点上的 primary shard
不也就没了嘛.
那好,master 会让 primary shard
对应的 replica shard
(在其他节点上)切换为 primary shard
.待宕机的节点修复了,修复后的节点也不再是 primary shard
了,而是 replica shard
.
以上就是 ElasticSearch 作为分布式搜索引擎最基本的架构设计.
参考
《Java工程师面试突击第1季-中华石杉老师》
更多干货资源请关注JavaEdge公众号