【WordPress】Elasticsearchを導入してみた

logo-elastic-1000x343

スポンサーリンク

Elasticsearchって何?

Elasticsearchは近年注目を浴びている全文検索エンジンです。

すでにこの分野で先行するApache Solrを超える勢いです。

特徴的な点は

  • 分散処理が簡単に行える
  • スキーマの定義が不要
  • RESTful APIを提供

が挙げられます。

また、全文検索ではクエリフィルタと呼ばれる仕組みで検索が行われます。

クエリで行っていることはスコアによる並び替えです。

検索キーワードによりマッチしているほどスコアが高く計算され、その順番で結果が得られます。

どれくらいマッチしているかの計算はtf-idfの考え方を使用しています。

そのため複数の検索キーワードを指定した場合に、全てのキーワードを含んでいなくても検索結果として表示されることがあります。

したがって検索キーワードのゆらぎを吸収し、検索漏れを少なくすることが可能になります。

フィルタは絞り込みを行います。

クエリで得られた結果をカテゴリーや日付などで絞り込むことができます。

導入してみる

Elasticsearchのインストール

AWSのAmazon Linux環境で導入しましたが、CentOS6でも大丈夫だと思います。

まずはJavaがインストールされているか確認します。

「コマンドが見つかりません」、「command not found」と表示された場合はJavaのインストールをしてください。

次に以下のスクリプトをsetup.shなど適当に名前をつけてファイルに保存し、実行権限を与えて管理者権限で実行します。

動作確認

このスクリプトでは日本語解析のためのkuromojiとGUIで操作できるようになるelasticsearch-headもインストールします。

ローカル環境の場合はhttp://localhost:9200/_plugin/head/にアクセスするとelasticsearch-headを使用できます。

プラグインのインストール

Fantastic ElasticSearchが比較的有名ですが、プラグインを修正しないと日本語用のkuromojiが使用できません。

代わりにこちらで公開されているプラグインを使用します。

プラグインフォルダに移動して(cd /var/www/html/wp-content/plugins/など)次のスクリプトを適当なshファイルに保存し、実行権限を与えて管理者権限で実行します。

実行後、スクリプトは削除してください。

その後プラグインページから「WP Simple Elasticsearch」を有効化します。

プラグインの設定

左メニューの設定の「WP Simple Elasticsearch」から設定画面に移動します。

URLやポートを設定します。

elasticsearch

変更を保存し、「POST DATA SYNC TO ELASTICSEARCH」ボタンでデータを同期します。

同期される投稿タイプは「投稿」のみです。

他の投稿タイプを追加する場合はテーマのfunctions.phpなどに以下のコードを追加します。

上の例では適当に作成したカスタム投稿タイプ「test」も同期されます。

固定ページの場合は「page」を追加します。

また投稿の取得でget_postsを取得数の制限をせずに使用しているため、投稿数がとても多い場合はメモリ不足になる可能性があります。

その場合はプラグインを修正して少しずつ処理するようにするか、Embulkなどで直接Elasticsearchにデータを入れるか、上記フック関数内で

を実行するなどしてメモリーの上限を上げるなどの対応をする必要があります。

動作確認

「プラグイン開発」で検索した場合に、もちろん「プラグイン開発」を含む投稿が上位に表示されましたが、「開発」を含む投稿もヒットしました。

良ければ試してみてください。

【WordPress】Fantastic Elasticsearchを導入してみた
前回の記事で「Fantastic ElasticSearch」でkuromojiの使用ができないと紹介しましたが、プラグインの修正をしなくても使用できました。 Fantastic Elast...
スポンサーリンク

シェアする

フォローする

コメント

  1. […] 前回の記事で「Fantastic ElasticSearch」でkuromojiの使用ができないと紹介しましたが、プラグインの修正をしなくても使用できました。 […]