インターネット作るマン

インフラ周りの技術や資格取得についてのメモ

Elasticsearch入門メモ

Elasticsearchというのがアツいらしいので調べた。
参考書籍『サーバ/インフラエンジニア要請読本 ログ収集〜可視化編』

◆Elasticsearchとは
elastic社が開発した全文検索エンジン

……全文検索ってなんだ?

全文検索(wikiより引用)
コンピュータにおいて、複数の文書(ファイル)から特定の文字列を検索すること。

全文検索エンジンはなにもElasticsearchだけというわけではなくて、Apache Solr、Amazon CloudSearch、Groongaなど色々ある模様。IT業界で複数の文書ファイルといえばサーバやネットワーク機器が出力するログデータで、それを整理して可視化するような事例がほとんど。

◆Elasticsearch用語
・Kibana
ElasticsearchのWEBインタフェース。kibana経由でElasticsearchに検索クエリを投げて、データを整理させるイメージか。

クラスタ
複数のElasticsearchプロセスを1つのElasticsarchとして動作させること、およびその機能を使って1つのElasticsearchを構成する複数のElasticsearchの集まりのこと。単に各Elasticsearchでクラスタ名を同一にすれば構成できるらしい。カンタン。ネットワーク機器も見習ってくれ。。

・ノード
Elasticsearchの1プロセスに相当。クラスタへ投げられたクエリは、ノードへのリクエストに変換されて、各ノードで処理される。

・ドキュメント
Elasticsearchが扱うデータの最小単位。RDBMSの1レコードに相当。

・フィールド
RDMBSのカラムに相当。検索に影響する箇所。

・インデックス
ドキュメントの集合。Elasticsearchでは基本的にインデックス単位でデータを管理し、クラスタ内の各ノードに分散して保持されることで大量のデータを扱うことができる。

・インデックスタイプ
インデックスに登録するドキュメントの論理的な分類。

・シャード(セグメント)
インデックスを小さな単位に分割したもの。なんで分割するのかというと、インデックスで説明した通りクラスタ内の各ノードにインデックスを分散して保持する(ことができる?)から。多分RAIDと同じような感じで、冗長性や処理速度の向上が見込める?

プライマリシャードとレプリカシャードがあって、あるインデックス内を複数のシャードに分けて、更に各シャードがプライマリシャードとレプリカシャードとして別々のノードに分かれるイメージか。多分シャードというのは領域的(このデータはこのプライマリシャードに置かれて、それからそのプライマリシャードに紐づくレプリカシャードにコピーされる)なものを指している。

マッピング
インデックスに保存されるデータの構造を定義するためのもの。インデックスタイプ毎にドキュメントのフィールドがどのような名前で、どのような型のデータを保存するかを記述する。つまり各ドキュメントがどのようなフィールドで区切られているのかは、このマッピングで設定するということ?

転置インデックス
「入力されたデータを特定のロジックで単語に分割し、単語をキーとして入力されたデータのIDをバリューとして保存する」もの。

……???

Elasticsearchのインデックス(およびシャード)は、Apache Lucene(また新しい言葉が出てきた。。)でデータ管理しているらしく、このLucene全文検索のためにデータを転置インデックスに変換して保存し、検索するらしい。。ここまで全く意味が分からない。。

最後の最後で一番意味の分からない言葉が出てきたが、全文検索のために重要な処理らしい。とは言えこの先「転置インデックス」という言葉を再び使う機会は無い気がしている。

Apache Lucene
「ルシーン」と読むらしい。Javaで記述された全文検索エンジン

用語を知る段階から疲れる。