Elasticserach - 1

Elasticsearch 7.6.2
Elasticsearchはインデックスやクエリの対象となるドキュメントを、全てJSONで記述する

論理的概念 - Elasticsearchで扱われるデータがどのように表されるのか

・ドキュメント
Elasticsearchに格納する1つの文章の単位をドキュメントと呼ぶ。
JSONオブジェクトとして記述される。
webサーバのアクセスログをドキュメントとして扱う場合、以下のようになる

{
    "host" : "192.168.100.50",
    "user" : "-",
    "date" : "2020-09-01T22:10;01",
    "request" : "GET http://www.example,com/index.html HTTP/1.1",
    "status" : "200"
}

 

・フィールド
ドキュメントのkeyとvalueの組をフィールドと呼ぶ。
"host" : "192.168.100.50" がフィールドに相当し、ドキュメントは一つ以上のフィールドからなる。
Elasticsearchの転置インデックスはフィールドごとに管理されているので、クエリを実行するときはフィールド単位で検索することになる。
フィールドには型があり、text, keyword, integer, float, date, boolean, object, arrayなどがある。



・インデックス
Elasticsearchにおいて、ドキュメントを保存する場所をインデックスと呼ぶ。
文書をアナライザによって単語に分解したり、転置インデックス情報を構成したりと様々なデータ形式で保存している

・ドキュメントタイプ
ドキュメントがどのようなフィールドから構成されているかを表す"概念"
ドキュメントは複数のフィールドから構成されているので、そのデータ構造をドキュメントタイプが表す。

マッピング
ドキュメントタイプを具体的に定義したもの
以下のように、ドキュメント内の各フィールドのデータ構造やデータ型を記述する。

{
  "propaties" : {
    "user_name" : { "type" : "text" },
    "message" : { "type" : "text" }
  }
}

 

物理的概念 - Elasticsearchが動作するサーバ群での分類

・ノード
Elasticsearchが動作する各サーバのことをノードと呼ぶ
各ノードは設定ファイルで設定できる一意のノード名を持つ。

クラスタ
お互いにメッセージを送信し合うノードのグループをクラスタと呼ぶ。
各ノードに、設定ファイルで一意のクラスタ名を指定し、同じクラスタ名のノード同士がクラスタを形成する。

・シャード
インデックスのデータを一定数に分割して、異なるノードで分散保持し検索性能を向上させる仕組みをシャードと呼ぶ
各ノード上に作られるLuceneインデックスファイルを利用して、シャードを実現している。


・レプリカ
各シャードが自動的に複製される仕組みをレプリカと呼ぶ。
オリジナルのシャードをプライマリシャード、複製されたシャードをレプリカシャードと呼ぶ。
検索処理をレプリカシャードにも並列で行うことで、可用性だけでなく検索性能も向上する。