【えらすてぃっくさーち】

Elasticsearch とは?

💡 大量データを一瞬で検索する「超高性能な索引システム」
📌 このページのポイント
Elasticsearch:全文検索の仕組み ドキュメント "東京でラーメンを食べた" "大阪のラーメン店" "東京の寿司ガイド" 索引作成 転置インデックス "東京" → Doc1, Doc3 "ラーメン" → Doc1, Doc2 "大阪" → Doc2 "寿司" → Doc3 検索クエリ 🔍 "東京 ラーメン" 結果: Doc1(スコア高) Elasticsearchの特徴 高速な全文検索 ミリ秒単位で応答 分散アーキテクチャ 大量データもスケール可 リアルタイム分析 ログ分析にも活用 転置インデックスで「言葉→文書」を高速に逆引きする検索エンジン
Elasticsearchのイメージ
ひよこ ひよこ

MySQLでもLIKE検索できるのに、Elasticsearchって必要なの?

ペンギン先生 ペンギン先生

MySQLのLIKEはインデックスが効かないから「全行を順番に調べる」という遅い方法になる。Elasticsearchは「転置インデックス」という仕組みで、どの単語がどのドキュメントにあるかを事前にまとめているから、100万件あっても瞬時に検索できるんだよ。

ひよこ ひよこ
ペンギン先生 ペンギン先生

本の巻末にある「索引」と同じ仕組みだよ。「Python → 32, 45, 78ページに出てくる」みたいに、単語→ページ番号の対応表を作っておく。逆引きするから「転置」インデックスと呼ぶんだ。

ひよこ ひよこ

ログの分析にElasticsearchを使うって具体的にどういうこと?

ペンギン先生 ペンギン先生

Logstash(ログ収集)→Elasticsearch(保管・検索)→Kibana(可視化)という「ELKスタック」が定番構成だよ。何百万行ものサーバーログから「この時間帯のエラーログだけ抽出」とか「どのURLでエラーが多いか集計」ができるんだ。

ひよこ ひよこ

ElasticsearchってデータをMySQLと二重管理するの?そのデータの整合性はどう保つの?

ペンギン先生 ペンギン先生

これがElasticsearch運用で一番難しいポイントで、多くのシステムではMySQLをマスターDBにして、変更のたびにElasticsearchを同期する設計をとる。問題は「DBへの書き込み成功→Elasticsearch同期失敗」でデータがズレること。定番の対処法は「DBの変更ログ(CDC: Change Data Capture)を使って非同期同期する」方法で、DeboeziumなどのCDCツールをKafkaと組み合わせることが多い。完璧な整合性より「少し遅延してもいずれ一致する結果整合性」という設計が現実的なんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Elasticsearch」って出てきたら「大量のドキュメントを高速に全文検索できる分散型検索エンジンのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Elasticsearch」 = 弾性(Elastic)のある検索(Search)エンジン
💬 Elasticは「伸縮自在」の意味。ノードを追加するだけでスケールアウトできる弾力性を表しているよ
← 用語集にもどる