Docker 入門
Elasticsearch で全文検索を実行する(macOS版)
Elasticsearch とは
Elasticsearch は,オープンソースの分散型検索エンジンで,構造化データ・非構造化データの高速検索や分析を実現できるプラットフォームです.膨大なデータをリアルタイムで処理する用途に幅広く利用されています.例えば,Web サイトやアプリの検索機能を実現する全文検索システムや,サーバログ,アプリログの集中管理を行うログ解析,データの集計・可視化などを行うデータ分析などが代表的な利用シーンです.
Elasticsearchの主な特徴は次のとおりです.
- 全文検索に強い
- キーワード検索だけでなく,形態素解析やスコアリングによる関連度順検索が可能です.
- スケーラブルな分散設計
- 数百万〜数十億件のデータを複数ノードで分散処理し,高速検索を実現します.
- REST API ベース
- HTTP + JSON で操作できるため,プログラミング言語を問わず,Python Django や Laravel などで開発した他のシステムと簡単に連携できます.
- 豊富な検索機能
- フィルタ,範囲検索,ファジー検索,サジェスト,ハイライトなど,柔軟な検索クエリをサポートしています.
- リアルタイム性
- データ投入後すぐに検索可能で,ログ解析やモニタリングに最適です.
リレーショナルデータベースである MySQL と Elasticsearch の違いを簡単に表でまとめておきます.
| 項目 | MySQL | Elasticsearch |
|---|---|---|
| データ項目 | テーブル(行・列) | ドキュメント (JSON) |
| 主な用途 | トランザクション,構造化データ管理 | 高速全文検索,ログ分析 |
| 検索機能 | SQL,LIKE検索,FULLTEXT検索 | 高度な全文検索,スコアリング |
| スケーラビリティ | 垂直スケール中心 | 水平スケール(分散設計) |
ここでは GitHub で公開している「小倉百人一首」の100個の JSON ファイル を hyaku_data に設置した上で Elasticsearch に登録し,全文検索ができるようにします.たとえば最初のデータ (hyaku_data/001.json) は次のような内容になっています.
hyaku_data/001.json
{
"id": "1",
"uta": "秋の田の かりほの庵の 苫をあらみ わが衣手は 露にぬれつつ",
"kana": "あきのたの かりほのいほの とまをあらみ わがころもでは つゆにぬれつつ",
"kajin": "天智天皇"
}
次のページでは macOS(または Linux)に Elasticsearch をインストールする方法を説明します.Windows での方法はこちらに進んでください.