Elasticsearch 特徴まとめ
Elasticsearch Features — 主にシステムを中心とした特徴まとめ
Published in
3 min readMar 12, 2014
以前から気になっていたElasticsearch、いつの間にか バージョンも1.0.1がリリースされていたので、そろそろ情報収集。まずは、パッケージに含まれるREADMEから。
Elasticsearch とは?
簡単に説明すると、クラウド向けに構築された、RESTful な API を提供する分散型のサーチエンジンアプリケーション。オープンソースで提供されています。
主な特徴は?
READMEから主な特徴を抜粋。
*分散処理システムと高可用性サーチエンジン
- 各 Index は変更可能な数の Shard で完全に分割されている。
- Shard は、1以上の Replica を持つことができる。
- リード/検索処理は、Replica Shard のいずれかの一つで実行される。
*マルチテナントとマルチ Type
- 1つ以上の Index をサポート
- Index 毎に1つ以上の Type をサポート
- Index レベルで、Shard の数、ストレージなどを配置
*いろいろなAPIセット
- HTTP RESTful API
- ネイティブ Java API
- 全てのAPIは、自動ノード操作を再ルーティングする。
*ドキュメント指向
- 事前にスキーマを定義する必要が無い。(※ 定義することもできる。日本語扱う場合は必ず定義する必要ありそうな感じもする。)
- スキーマはインデックスプロセスのカスタマイズ設定を Type 毎に設定できる。(※ 処理する順番とか指定できるのだろうか?)
*信頼性の高い非同期 Wite-Behind
*(Near) リアルタイムサーチ
*Lucene 上に構築されている
- 各 Shard は、完全に機能する Lucene のインデックス
- Lucene の全てのパワーは、シンプルな設定とプラグインを通して簡単に公開可能。
*操作の一貫性
- 単一のドキュメントレベルの操作はアトミック、一貫性、分離性、耐久性に優れている。(※よくわからない。。。)
*Apache 2 オープンソースライセンスで提供
なんとなくイメージ的には、物理的なインデックス管理をしている Shard と、論理的なインデックスの概念、Index、Type の特徴をよく理解して、設計・利用することが Elasticsearch のパワーを引き出す近道かなと言うのが感想?もう少し、概念的なもを図にして理解した方が良さそう。