ラック
Home > CMS > 記事 > 2017年1月 > WordPress + Elasticsearch

WordPress + Elasticsearch

カテゴリ: WordPress

「WordPress + Elasticsearch」という面白そうな話題がちらっと見えたので試してみることにしました。

WP Simple Elasticsearch設定画面

試しにWPのテストサイトに上記の「WP Simple Elasticsearch」プラグインをインストールして有効化、WPのサイトがある場所と同じサーバに以前インストールしたElasticsearch(ELKスタック構築の記録参照)に投げてみるように設定してみました。

結果、これはイメージとしてはキーワード検索のルーチン部分を本体ではなくElasticsearchに丸投げしている、という感じ…なのでしょうか?WPからElasticsearchに(プラグイン「WP Simple Elasticsearch」によってElasticsearchが処理できる形式で)リクエスト投げられたら、Elasticsearchはjson返す。それで、プラグインはそれを受け取ってキーワード検索のクエリ結果としてWPに処理させる…というイメージ(ただしソースを読んでないので合っているかどうかは未検証)。

  • 自前のテーマでsearch.phpをゴリゴリカスタマイズしている場合でも有効っぽい(上記のイメージ通りならばそれはそうか)
  • カスタマイズしてカテゴリやタグだけの絞り込み(キーワードなし)や、キーワード+カテゴリやタグとの絞り込みも可

昇順・降順など並びの指定がない場合は…Elasticsearchのマッチのスコア順で並んでいるのでしょうかね(未確認)?あとは確認事項として

  • Elasticsearchサーバにデータを自動同期するのか?
  • カスタムフィールドへの応用(上記のCustom Fieldsを使えば良さそう)

辺りの検証を行いたいところ。

ただ、Elasticsearchは結構メモリ食うと思うので、同じサーバではなくて別サーバで負荷分散させた方が良さそうな。今回はテストということと、たまたま既にElasticsearchが同じサーバにインストールされていたので同じサーバですが。

追記

設定→WP Simple Elasticsearchの「Post Data sync to Elasticsearch」ボタンは最初の設定後に一度クリックすれば、その後はボタンを押さずとも記事の新規追加・変更時に自動的に追加・変更されるようですね。simpleといってもさすがにデータソースの自動更新はあるようなので安心できました。

カスタムフィールドについては、各カスタムフィールドのスラッグを改行で区切って入力すれば登録されるようです。試しに2つを


customfield1
custom-field2

というようにテキストエリアに入力して「変更を保存」することでインデックスが生成されることをKibana上から確認できました。

気になること

カスタム投稿や固定ページはデフォルトでは同期しないようです。functions.phpへの追記が必要な模様。

検索結果についてはElasticsearchのロジックに依るのでElasticsearchの挙動を把握すれば…という感じでしょうか。

タグ: プラグイン, サイト内検索

 



関連する記事一覧