[Laravel] ElasticSearchとLaravel Scoutで全文検索 (1) – ElasticSearchセットアップ

Laravel Scoultは、Laravelにフルテキスト検索機能を追加するパッケージ。

Laravel Scout – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/5.4/scout

その検索エンジンにはデフォルトでAlgoliaが選ばれている。

Algolia | The Most Reliable Platform for Building Search
https://www.algolia.com/

AlgoliaはサーチAPIを提供する商用サービス。無償プランもあるけど、レコード上限は1万件、オペレーション上限は月間10万件に制限されている。自分が今やっている実験ではレコード件数がすでに6万件を超えているので無償プランは使えない。かといって、自腹で有償プランを契約できる予算は無い。

Laravel Scoutはドライバを書くことで異なる検索エンジンを接続できるようになっている。オープンソースのフルテキスト検索エンジンと言えばElasticSearch。調べてみると、Laravel ScoultのElastric Searchドライバがすでに存在した。

Laravel Scout Elasticsearch Driver
https://github.com/ErickTamayo/laravel-scout-elastic

セットアップ手順を説明している記事も見つかった。

Basic Search Functionality with ElasticSearch & Laravel Scout
https://medium.com/@samogorm/basic-search-functionality-with-elasticsearch-laravel-scout-6ac182c99cbf

この記事をなぞって、自分のLaravelプロジェクトにElasticSearch+Laravel Scoutによる全文検索機能を追加してみたい。いきなり本番サーバーに適用するのは怖いので、ローカルのHomestead(Ubuntu)で試してみる。

まずは以下の下準備を行う。

Prerequisites

  • Basic Knowledge of Laravel
  • You have Laravel 5.3 installed
  • The latest Java version is installed to your machine
  • You have installed ElasticSearch to your machine
  • You have ElasticSearch running a http://localhost:9200

Javaのインストール

Linuxmania:apt-getでJavaをインストールしよう (Ubuntu)
https://www.linuxmania.jp/apt-install-java.html

ElasticSearchのインストール

Installing Elasticsearch | Elasticsearch Reference [5.5] | Elastic
https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

ElasticSearchが動いたので、Laravel Scoutの組み込みに続く。