概要

DrupalとAmazon OpenSearch Serviceを接続する機会がありましたので、その備忘録です。以下の記事が参考になりました。

https://www.acquia.com/jp/blog/intergration-with-drupal-and-elasticsearch

モジュールのインストール

drupal/search_apidrupal/elasticsearch_connectorに加えて、nodespark/des-connectorをインストールする必要がありました。

(バージョンの指定方法など、改善の余地があるかもしれません。)

cccooommmpppooossseeerrrrrreeeqqquuuiiirrreee"'"nddorrduueppsaaplla//rsekel/aadrsectshi-_ccasopenian:re^cc1ht._o2cr9o:'n^n7e.cxt-odrev^"7.0@alpha"

続けて、以下で有効化します。

drushpm:enablesearch_apielasticsearch_connector

DrupalをElasticsearchに接続する

クラスタ

以下にアクセス

/admin/config/search/elasticsearch-connector

「Add cluster」をクリックします。

そして、以下のように値を入力します。Amazon OpenSearch ServiceでBasic認証をかけている方法を前提としています。注意点として、「Server URL」に入力する値の末尾に、:443が必要でした。

Elasticsearchサーバーへの接続が成功すると、Cluster Statusに yellow や green と表示されます。

インデックス

次に、任意の作業ですが、インデックスを作成します。「Add index」ボタンを押して、nameだけ入力してみます。結果、以下のようにインデックスが作成されました。

Search APIの設定

今度は、Search API側の設定を行います。以下にアクセスします。

/admin/config/search/search-api

サーバの追加

「Add Server」ボタンを押します。特に、BackendにElasticsearchを選択して、Clusterに先程作成したクラスタを選択します。

インデックスの追加

以下の画面には出ていませんが、「Datasources」のところで、「Content」を選択しています。また「Server」で、上記で作成したサーバを選択しています。

次に、末尾の「Save and add fields」ボタンをクリックします。

フィールドの追加

今回は最低限のフィールドとして、Titleを追加しておきます。

追加したフィールドに対するFulltext検索を可能とするために、「Type」を変更します。これらの設定は適宜変更してください。

再インデクシング

「Save changes」を押すと、以下のように、reindexingへのリンク(黄色)が表示されます。

上記のリンクをクリックして、以下にアクセスします。

/admin/config/search/search-api/index/{インデックス名}

遷移後の以下の画面下部の「Index now」などをクリックして、インデクシングを行います。

データの確認

以下のURLなどにアクセスして、Amazon OpenSearch Serviceのデータを確認してみます。インデックス名などは適宜変更してください。

https://{opensearchサーバー}/elasticsearch_index_bitnami_drupal_test_es_index/_search

以下のようにデータが登録されていることが確認できます。

{"""}"tt_,hois""""i"}""omhtssftt,mhkeaoukaso""ai{}{"drtcii"tvrxt,:_dacpl:aae_s""""}""""oslepellls"________4u""sed{"uac:iiss""]iiss""]6t::sd":etondco_tndco_t0"f":"ir[d"ouli"d"ouli",:{5u:{:oee:rratie:rrati,l0n"xecnltxecnltf"05":"""egee"""egeea:,0::e:"u"m:e:"u"ml61n:a:n:a:s50"."t1g9"t1g9e,,e0ei.{e[4ei.{e[4,q,lt0"0lt0"1"ay,:"ay,:"s:s:tn"tn"ioeioecdncdnse"se"e/,e/,a1a1r0r0c0c0h1h2_:_:ieiennnnd"d"e,e,xx__bbiittnnaammii__ddrruuppaall__tteesstt__eess__iinnddeexx"",,

さいごに

この後、Views機能を使った検索結果ページの作成や、ファセット検索・サジェスト機能の追加を行いたいと思いますが、長くなったのでこの記事はここまでとします。

上記の設定のあと、コンテンツを登録すると、自動的にAmazon OpenSearch Service(Elasticsearch)のインデックスも更新されました。

大量のコンテンツを高速に検索するためのソリューションとして重宝しそうです。