社内サービスの検索エンジンでElasticsearchというものを使っているのですが、Elasticsearchについてまだまだ知識が足りないので、まとめて整理してみました
Elasticsearchとは
公式には以下の記述が。
Elasticsearchは、様々なユースケースを解決する分散型RESTful検索/分析エンジンです。データを一元的に格納することで、超高速検索や、関連性の細かな調整、パワフルな分析が大規模に、手軽に実行可能になります。Elastic Stackの心臓部となるプロダクトです。
Elasticsearchの特徴
全文検索
全文検索エンジンとは、大量にあるドキュメントデータの中から指定したキーワードを含むドキュメントデータを素早く検索するための仕組み。
高速検索処理
- 全文検索のための有限状態トランスデューサを使用したインデックス
- 分析用カラムストア
- 数値データ・地理データを格納するためのBKDツリー
↑により、繰り返し検索・広範囲検索などの実行が簡単となるためデータ活用性をさらに向上させることが可能
多様なクエリに対応
- テキスト
- 構造化データ
- 非構造化データ
- 数値
- 地理情報
- メトリック など
公式を見ると、その他にもたくさんの機能があるようです。
https://www.elastic.co/jp/elasticsearch
Elasticsearchの基本概念
-
インデックス
データを保存する場所で、RDBでいうテーブル。検索を目的としているため元文書の格納は必ずしも必要ない。 -
ノード・クラスタ
可用性・耐障害性を実現するため、複数のサーバー上で実行。このサーバー群をクラスタ、個々のサーバーとノードという。 -
レプリカ
それぞれのノードにはシャードのレプリカが存在。更新はもちろんプライマリのシャードに対して行われますが、万が一プライマリのシャードが失われると新しくレプリカのシャードがプライマリとなる。 -
シャード
大量のデータを使う際、それぞれのノードでデータを分割して保持。その時にシャードと呼ばれる部分インデックスで分割。
おわりに
Elasticsearchの特徴を見る限り、Elasticsearchはさまざまな方法で手にしたい情報に辿り着く手段を備えていることから、かなり優れた検索エンジンであることがわかりました。
次回はRuby環境でElasticsearchを利用する一例についてまとめていこうと思います。