神戸学院大学 経営学部 林坂ゼミ

Docker 入門トップページ

« 戻る 次へ »

Docker 入門

Elasticsearch で全文検索を実行する(macOS版)

Elasticsearch とは

Elasticsearch は,オープンソースの分散型検索エンジンで,構造化データ・非構造化データの高速検索や分析を実現できるプラットフォームです.膨大なデータをリアルタイムで処理する用途に幅広く利用されています.例えば,Web サイトやアプリの検索機能を実現する全文検索システムや,サーバログ,アプリログの集中管理を行うログ解析,データの集計・可視化などを行うデータ分析などが代表的な利用シーンです.

Elasticsearchの主な特徴は次のとおりです.

全文検索に強い
キーワード検索だけでなく,形態素解析やスコアリングによる関連度順検索が可能です.
スケーラブルな分散設計
数百万〜数十億件のデータを複数ノードで分散処理し,高速検索を実現します.
REST API ベース
HTTP + JSON で操作できるため,プログラミング言語を問わず,Python Django や Laravel などで開発した他のシステムと簡単に連携できます.
豊富な検索機能
フィルタ,範囲検索,ファジー検索,サジェスト,ハイライトなど,柔軟な検索クエリをサポートしています.
リアルタイム性
データ投入後すぐに検索可能で,ログ解析やモニタリングに最適です.

リレーショナルデータベースである MySQL と Elasticsearch の違いを簡単に表でまとめておきます.

項目MySQLElasticsearch
データ項目 テーブル(行・列) ドキュメント (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 での方法はこちらに進んでください.

目次に戻る