あなたがElasticSearchを取得する用語と記事

この記事では、基本的な概念ElasticSearch、などの断片化などの研究文書、インデックス、クラスタ、ノード、の概念を導入したが、ElasticSearchとリレーショナルデータベースは、単純な類推を行うだけでなく、RESTのAPIの簡単な使用を使用します。

ElasticSearch用語の
ここに画像を挿入説明
インデックスと文書が論理的な概念にバイアスされ、フラグメント・ノードは、物理的な概念を好みます。

文書が何であるかをまず第一に:

ドキュメント(文書)
(ESと称する)elasticsearchは、ドキュメント指向の、文書はすべての検索データの最小単位です。

私たちは、より鮮やかに、文書であるかを理解だから、あなたにいくつかの例を与えます:

  • ログファイルのログエントリ
  • 特定の映画、アルバムの詳細情報
  • 曲の中のMP3プレーヤー、PDFドキュメントの詳細
  • 顧客データ、商品分類データ、注文データ

私たちは、リレーショナルデータベースのレコードとして文書を理解することができます。

JSON形式に文書ESフィールド型配列がESに格納されているでは、JSONは、各フィールドに対応する(文字列/配列/ブール/日付/バイナリ/レンジタイプ)を有するフィールドで構成オブジェクト。

ESでは、ユニークのそれぞれが独自のIDを指定したり、自動的にESによって生成することができ、文書IDを持っています。

前回の記事でどのようにリアルタイムログ解析ELKプラットフォームを構築する方法を教えて、私たちはLogstashによってESへのデータのインポートについて話しました、次のようにテストデータセットと対応する変換の一部を形成するには、です。

movieId,title,genres
193585,Flint (2017),Drama
193587,Bungo Stray Dogs: Dead Apple (2018),Action|Animation
193609,Andrew Dice Clay: Dice Rules (1991),Comedy

ここに画像を挿入説明
我々はESに変換し、ムービーにテストデータセットcsvファイルのデータからRowDataの1を読み、[Logstashによって変換された後、JSON形式です。

各フィールドには、ESを使用すると、自動的に突起のデータ型をやって助ける、ともESでネストされた配列とデータをサポートすることができ、独自のJSONデータ型を持っています。

各文書には、関連情報注釈付き文書の対応するメタデータを持って、私たちはどのような道路データを理解する必要があります。

{
    "_index" : "movies",
    "_type" : "_doc",
    "_id" : "2035",
    "_score" : 1.0,
    "_source" : {
        "title" : "Blackbeard's Ghost",
        "genre" : [
        "Children",
        "Comedy"
        ],
        "id" : "2035",
        "@version" : "1",
        "year" : 1968
    }
}

その中で、インデックスは、名前_index文書が属する表し、_typeは、名前のドキュメントの種類が属する示し; _idは、ユニークな文書IDであり、_source JSONデータを元の文書に文書検索のデフォルトのリターンが_sourceフィールドであるとき、ドキュメントに@versionバージョン情報は、矛盾のバージョンを解決するためには良い問題になる可能性があります。_score関連得点、この文書は、クエリ点で考慮されます。

文書への導入後、私たちはインデックスを見てみましょう:

指数(インデックス)
インデックスは、類似したクラスを代表して、インデックス、インデックス、商品分類指数、受注指数を持つことができ、インデックスが名前を持つ、インデックスは多くのドキュメントを含めることができ、このような顧客として、単に文書の類似した構造のコレクションですまたは同じ文書は、そのようなすべての製品データ、すべての商品のドキュメントを格納する可能性がある商品指数の設立など。各インデックスフィールドを含むように、文書の種類を記述するために使用される独自の定義ファイルをマッピングされ、スライス(シャード)は、物理的空間の概念で具現化され、データインデックスはスライス中に分散されています。

それとマッピング設定のために行くように設定することができ、インデックス、では、マッピングは、どのように多くのスライスとのデータの使用は主指定の設定、フィールド内のすべてのドキュメントのインデックスである型構造を定義したディストリビューションを実行する方法です。

異なるコンテキストでの指数は異なる意味を持っている、例えば、ESここで、インデックスは文書のクラスの集まりである、これは名詞であり、ESプロセスは、インデックス(索引)と呼ばれていると、文書の保存と同時に、脇に述べたように、ESインデックスは、Bツリーインデックスまたは転置インデックスがあるかもしれない、転置インデックスはESで重要なデータ構造であり、将来の記事で説明します。

次に、タイプは説明します。

タイプ(タイプ)
7.0より前に、各インデックスは、複数のタイプを設定することができ、それぞれのタイプには、文書の同じ構造を持つことになりますが、6.0以降では、Typeは、インデックスのみのタイプを作成することができ、7.0から始まる、廃止されました、_DOCです。

各インデックスは、1つまたは複数のタイプを持つことができる場合、タイプは、論理データ分類指標であり、タイプ下の文書は、そのようなブログシステムと同じフィールド(フィールド)、持って、インデックスが存在し、ユーザがデータを定義することができタイプ、ブログのデータタイプ、コメントやその他のデータタイプ。

これまでのところ、我々は、クラスタが何であるかを学習することにより、その後、文書の概念、インデックス、およびタイプを学びましたか?ノードとは何ですか?断片化とは何ですか?

クラスターの概念を初めて目。

クラスタ(クラスタ)
ESクラスタは、サービスの可用性であるクラスタサービスが応答を停止し、サービス全体の静止作業、ノードがある場合、高可用性は、実際に高可用性を満たすために、分散システムであるか、またはクラスタ全体が存在すること一部が失われたときに、データの消失はありません。場合、それは、データの可用性です。

ユーザは、他のノードへの分散データにますます高く、より多くの成長データは、システムの必要量を要求し、最終的には拡張のレベルを達成する場合。クラスタノードに問題がある場合は、クラスタ全体のサービスは影響を受けません。

異なるクラスタ間ES分散アーキテクチャは、異なる名前で区別され、elasticsearchのデフォルト名は、設定ファイルで変更、または-Eのcluster.name = wupxコマンドラインで設定され、Aを使用することができますクラスタは、1つ以上のノードを持つことができます。

の健康状態を示すために、3色のクラスタをES:

  • 緑:メインの断片化とコピーが正常に割り当てられています
  • 黄:すべてのマスタースライス正規分布のコピーが適切にスライスを割り当てに失敗しました
  • 赤:メインフラグメンテーションの割り当てに失敗しました(例えば、85%以上のサーバーのディスク容量、新しいインデックスを作成します)

クラスタの完全な理解は、そのノードが何であるかを見てください。

(ノード)
のノードは、実際にESのインスタンスである基本的にJavaプロセス、ESは、単一のマシン上で複数のプロセスを実行することができますが、生産は、一般的に使用すると、単一のマシン上でESのインスタンスを1つだけ実行することをお勧めします。

各ノードは、独自の名前を持ち、ノード名が非常に重要である(運転・保守管理業務の実施に)、設定ファイルを介して設定することができ、または-E node.name = node1の指定されたときに開始します。開始後の各ノードは、ディレクトリに格納されたデータのUIDが割り当てられます。

クラスタに参加するには、デフォルトのノード名elasticsearch直接開始多くのノードならば、それらは自動的もちろん、ノードがクラスタelasticsearchを形成することができ、クラスタelasticsearchを形成することになります。

候補マスターノード(マスター適格ノード)&マスターノード(マスターノード)
各ノードの開始後、デフォルトはマスター適格ノードで、コンフィギュレーションファイルにnode.master設定することができます偽の禁止、マスター適格ノードが参加することができます予備選挙プロセスは、マスターノードになります。最初のノードは、時間を起動すると、マスターノードとして、自身を選出します。

各ノードは、クラスタの状態を保存上のデータを修正することができる任意のノードは、データ矛盾をもたらす場合にのみマスターノードクラスタのステータス情報は、変更することができます。

クラスタ(クラスタ状態)、以下の情報を含む、クラスタに必要な情報を維持した状態:

  • すべてのノード情報
  • インデックスおよびそれに関連するマッピング情報と設定のすべて
  • ルーティング情報片

ここでは、データノードと調整ノードが何であるかを見て?

データノード(データノード)&調整ノード(調整ノード)
名前が示すように、既存のデータのクラスタを保存することができないの断片化、に保存されているすべてのデータを格納するための責任がデータノードと呼ばれているデータノードを、保存することができますが、あなたはデータノードを増やすこともできますストレージの問題を解決し、それがデータの展開に重要な役割を持っています。

調整ノードがクライアントの要求を受信するための責任があり、要求が適切なノードに配布され、最終結果は、各ノードが調整ノードの役割を果たしてきましたデフォルトでは、クライアントに返すために一緒にコンパイルされています。

他のタイプのノードがありますが、あなたは次を理解することができます。

他のノードの種類

  • ホット及びコールドノード(ホット&ウォームノード):ホット・ノード(ホットノード)スループットより良いディスクと良好有することができ、高いノード構成である
    冷ノード(ウォームノード)より長いノードの一部を格納することは、CPUが、これらのノードのマシン構成は比較的低くなります。異なるハードウェア構成を実装するために使用するデータノード、
    ホット&ウォームインフラストラクチャは、クラスタの導入のコストを削減します。

  • 機械学習ノード(機械学習ノード):異常検出を行うために、仕事に機械学習を実行するための責任を負います。

  • 部族のノード(ノード部族):ESが異なるクラスタ、およびこれらのクラスタ別としてクラスタリング支持体に接続されています。

  • 前処理ノード(インジェストノード):前処理操作文書の前にインデックスを許可する前に、すなわち、データが書き込まれるが、データはプロセッサ(プロセッサ)およびパイプライン(パイプ)、FUの特定の予め定義された数で変換されの。

起動時に各ノードは、そのノードタイプelasticsearch.ymlプロファイルを読み込むことで、それでの外観を聞かせて、どのような役割の自分自身を決定します!

ノード型
開発環境、ノードが複数の役割を引き受けることができます。

本番環境では、あなたは、単一ノードの役割(専用ノード)を設定する必要があります。
ここに画像を挿入説明
完成したノードは、私たちは断片化が何であるかを見てみましょうか?

断片(シャード)
により、単一のマシンには、大量のデータを格納することができない、ESデータが複数のサーバー上に格納された屈折率分布型フラグメント(シャード)の複数に切断してもよいです。断片化は、横方向に拡張することができると共に、他の検索及び分析操作は複数のサーバーが実行するまで分散その結果、より多くのデータを格納し、スループット性能を向上させます。
ここに画像を挿入説明
上記のように、インデックスとスライスとの間の関係は、ES指数は多くのスライスを含んでいる、スライスは、それ自体が独立して索引付けを実行し、タスクを検索することができ、完全な検索エンジンであるLuceneインデックスです。Luceneインデックスだけでなく、セグメントの数で、各セグメントは、逆インデックスです。ESは、各セグメントは、複数の文書データを含む新しいリフレッシュを生成します。これは、文書内の異なるフィールドに別々に各セグメントをインデックスされます。単語の数によって各フィールドの値(期間)組成物は、用語最終結果はワープロと言語処理を経て本明細書の内容である(例えば、句読点の除去とは、ルートに変換されます)。

スライス(プライマリー)、コピー別のスライス(レプリカシャード)に基づいて、2つのカテゴリにフラグメンテーション。

拡大の主な問題を解決するために、マスタースライスレベルは、メインの断片化は、クラスタ内のすべてのノード間でデータを配布することができ、マスタースライスはLuceneのは、実行の一例であり、我々はESのインデックスを作成するときに、あなたは、分割片の数を指定することができますが、再インデックスが変更されない限り、枚数は、索引の作成を指定した主なポイントは、以下を変更することはできません。

クラスタノードのハードウェア障害が道のコピーによって、そこにあるとき、あなたはフラグメンテーションは、マスタースライスのコピーであるため、データは、実際の損失ではないことを確認することができることを意味し、データの可用性の問題を解決するためのフラグメントのコピーコピーは、インデックス内の断片のコピー数は、コピーの数を増加させることによって、動的に調整することができる、ある程度(スループット読み取り)サービスクエリのパフォーマンスを向上させることができます。

マスタ・スライスと、スライスコピーによって理解するには、以下の例では、データがクラスタの異なるノードに分散する方法です。

PUT /blogs
{
    "settings" :{
        "number_of_shards" : 3,
        "number_of_repicas" : 1
    }
}

点number_of_shardsの数の設定前片3、number_of_repicas部品のコピーを1つだけ表し、インデックスブログ上に定義されています。
ここに画像を挿入説明
グラフwupx上のクラスタ、データが入って来ている顔インデックスブログ構成、上では、各ながら主内部ESは、3つのノード上に分散スライス置かれ、3つのノードの合計ノードに障害が発生し、内部機構はESフェイルオーバーを生成することになるがあるとき断片のコピーがクラスタ内の他のノードに分散され、フェイルオーバー機構は、次の3つの主な点を見ることができる上記の画像に、後の記事で説明されますシートノードは、それがシステムの可用性を高めることができるかどうか、この時点でクラスタに追加された場合、3つのノードに分散していますか?

この問題では、我々は、フラグメントの次のセットを見てみましょう。

設定されたスライス
本番環境での設定スライスは非常に重要であり、インデックスの作成が事前に設定されるべきとして、事実の後に変更することはできませんときに、非常に多くの場合、プライマリスライスので、事前に容量計画を行う必要があります前の例では、インデックスは、3つの主要フラグメントに分割され、クラスタノードが一層増加し、指数は3つのだけのノードに分散させることができます。

断片化は、統計結果の精度に影響を与え、それは、副作用を引き起こすだろう一方で、それは検索結果の得点に影響を与えるだろう、大きすぎる設定されている。また、過度の断片化の一つのノードが同時に、資源の無駄につながりますまた、パフォーマンスに影響を与えます。バージョン7.0からは、この態様はまた、オーバーシャ​​ーディングの問題を解決することができますから、1から5までのデフォルトマスタースライス設定番号をES。

リレーショナルデータベースのアナロジーであることが、私たちになじみの用語でESを理解した後、私たちを理解します。

RDBMS&ES
:リレーショナルデータベースとESを取るために、次のアナロジーを作るので、私はそう、我々は容易に理解することを、我々はより多くの(RDBMSと呼ばれる)、リレーショナルデータベースを理解しなければならないと考えている
ここに画像を挿入説明
リレーショナルデータベースとES、テーブルから、それを見るのは簡単です我々は、次の対応関係を持っています:

  • ES指数(インデックス)はリレーショナルデータベースのテーブル(表)
  • 各レコード(行)に対応するESドキュメント(文書)でリレーショナルデータベース
  • ESのフィールドに対応するリレーショナルデータベース(列)のフィールド(提出)
  • ESマップに対応するテーブル定義(スキーマ)リレーショナルデータベース(マッピング)
  • リレーショナル・データベースが照会およびSQLによる他の動作は、ESにもDSLクエリおよび他の操作を提供することができます

フルテキスト検索または計算点の結果を検索すると、該当するESが、データトランザクションの要件のための時間が比較的高く、場合リレーショナルデータベースESの組み合わせがします。

他の言語との統合を容易にするために、ESは、私たちのプログラムが統合するとESは、単にHTTPリクエストは、次の基本的なAPIに対応する結果が得られます他のプロシージャへの呼び出しを行うためのREST APIを提供し、導入:

REST API
ここに画像を挿入説明
インデックス管理機能を提供するオープンKibana、当社初のオープンKibana管理メニュー(管理)、あなたは映画インデックスインデックス管理がある見ることができ、製品の輸入、インデックスをクリックして、私たちが見るとインデックス設定することができますそれを設定する方法についてのマッピング情報は、後の記事で紹介されます。

身近に、REST APIを参照するにはみんなのために:

次に、オープンKibana開発ツール(開発ツール)、インデックスの映画は、今あなたが映画のインデックスに関連する情報を表示することができ、GET映画は、実行をクリックして入力し、主要指数は、マッピングおよび設定が含まれています。

GET映画/ _countクリックの実行を入力し、あなたが索引付けされたドキュメントの合計数を確認することができ、次のように、結果は以下のとおりです。

{
  "count" : 9743,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  }
}

次のコードを入力します。

POST movies/_search
{
  
}

あなたは、ドキュメント形式のトップ10のドキュメントを表示することができ、実行をクリックします。

また、GET / _cat /インデックス/ MOV *?V&S =インデックスを使用し、インデックスワイルドカードクエリの名前を指定することができ、あなたは、屈折率整合を表示することができます。

使用して、あなたは、文書の数に応じてソートすることができ、/_cat/indices?v&s=docs.count:desc GET。

緑がインデックスのステータスを表示することができますように、緑色の使用GET / _cat /インデックス?V&健康=。

?使用GET / _cat /インデックスV&H = I、TM&S = TM:DESC、あなたは、各インデックスのメモリの量を表示することができます。

ESはまた、健康をクラスタ化することができますGETの_cluster /健康を使用して、健康状態のクラスタを表示するAPIを提供し、次の結果が返されました:

{
  "cluster_name" : "wupx",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 10,
  "active_shards" : 10,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

あなたは、クラスタの状態が緑色で、2つのノードの合計をクラスタ名のwupxを見ることができ、2つのノードがデータノード、プラス10枚のマスタースライスの役割を想定しています。

REST APIは、あなたの残りの部分は次の探検に行くことができ、ここで紹介します。

慎重なジュニアパートナーは、バージョン7.0の後、実際Kibanaで、中国の言語インターフェイスになる方法Kibanaを見つけるだろう、公式の中国のリソースファイルが付属しています(Kibanaに位置/ディレクトリ/ X-パック/プラグイン/翻訳/翻訳をnode_modules)、することができますファイル内の設定ファイルのディレクトリkibana.yml、プラスi18n.locale設定項目を変更する:「ZH-CN」、そしてそれがKibanaが完了し終わって再起動します。

要約
各ノードは異なる役割を引き受けることができ、またメインの断片化と断片化だけでなく、分散システムにおける彼らの演劇のコピーであるかを理解するために、各クラスタを理解し、その他の文書、インデックス、クラスタ、ノード、の概念を学ぶために、この論文をロールに、またによって作られ、リレーショナルデータベースのアナロジー、我々はより簡単に理解するためにそうすることを、また、RESTのAPIの使用を紹介し、最後にあなたがマインドマップESの用語をまとめて与える、マインドマップのソースファイルは、公開番号Wupei玄におけるESを返信することができます取得。
ここに画像を挿入説明

オリジナルの記事は、0を発表 ウォンの賞賛0 ビュー586

おすすめ

転載: blog.csdn.net/qq_41490913/article/details/105021577