🌟

StrapiとAmazon OpenSearchを連携する

2023/05/26に公開

概要

StrapiとElasticsearchとの連携にあたり、以下の記事が参考になりました。

https://punits.dev/blog/integrating-elasticsearch-with-strapi/

ソースコードも公開されています。

https://github.com/geeky-biz/strapi-integrate-elasticsearch

ここでは、上記の記事を参考にして、Amazon OpenSearchと連携するなど、一部カスタマイズした内容についてメモします。

カスタマイズしたソースコードは以下です。

https://github.com/nakamura196/strapi-integrate-opensearch

修正点

以下について、記事ではindexing_typeとなっていますが、indexing_request_typeとする必要がありました。

https://github.com/nakamura196/strapi-integrate-opensearch/blob/006c533d4d7882fc9779552db31a7b0e2ada5e57/elastic/cron-search-indexing.js#L16

またElasticsearchではなく、Amazon OpenSearchを使用するにあたり、以下のライブラリをインストールする必要があります。

npm install @opensearch-project/opensearch
npm install @aws-sdk/credential-providers

認証の方法はいくつかあると思いますが、ここでは以下のように変更しました。

https://github.com/nakamura196/strapi-integrate-opensearch/blob/006c533d4d7882fc9779552db31a7b0e2ada5e57/elastic/elasticClient.js#L1C1-L30

インデックスへの登録および削除の処理についても、以下のように修正する必要がありました。

https://github.com/nakamura196/strapi-integrate-opensearch/blob/006c533d4d7882fc9779552db31a7b0e2ada5e57/elastic/elasticClient.js#L39-L44

上記のような修正の結果、StrapiとAmazon OpenSearchを接続させることができました。

elastic/elasticClient.js および src/api/search/controllers/search.js を変更することで、APIの出力結果もカスタマイズできました。これにより、ElasticsearchのAggregationsを使用することができるようになりました。(私の調査不足により、Strapi単体でも実現できるかもしれません。)

まとめ

StrapiとAmazon OpenSearchの連携にあたり、参考になりましたら幸いです。

Discussion