キャッチミー! AWS OpenSearch Service

AWS

2023.2.17

Topics

はじめに

こんにちは、プロダクト推進部のFeelです。
以前に検索エンジンを構築するプロジェクトを行ったことがありましたが、その際、検索エンジンの改善に、論文などに新たに登載されているアルゴリズムなどを利用したため、研究と開発の手がかなりかかりました。また、長い時間を投資して開発した検索エンジンが結局、失敗という結果になったので、時間的にも費用的にも膨大なロスが発生してしまいました。

しかし、時代が変わってプラットフォームとして検索エンジンが提供される時代が到来し、AWSでは2015年、 Elasticsearch というApache Lucene を基盤として構築された分散検索/分析エンジンを使用した完全マネージド型サービスであるAmazon Elasticsearch Serviceを発表し、検索エンジンプラットフォームの可能性を開き、2021年にはAmazon Elasticsearch ServiceにOpenSearch1.0の機能を追加したAmazon OpenSearch Serviceをリリースすることで、異彩を放っています。 テストするには少し遅い感じもしますが、今回は検索エンジンに関連する作業があるため、Amazon OpenSearch Serviceを試してみました。

1)Amazon OpenSearch Serviceにてクラスターの作成

  Amazon OpenSearch Serviceは完全マネージド型サービスです。数回クリックするだけでOpenSearchクラスターとKibanaエンドポイントを提供し、すぐに検索、分析が開始できて、さらに、ライセンス費用なしでドキュメント、フィールドレベルのセキュリティ簡単なインデックス管理SQLk-NNAnomaly detectionなどもサポートしています。 本日は、検索用にjson形式で ドキュメントを生成してインデックスを付ける Amazon OpenSearch Serviceドメインを作成してみます。

① AWSのAmazon OpenSearch Serviceに移動して「ドメインの作成」をクリックし、ドメイン名に自分が付けたい名前を入力します。私は「feel-openserch」として入力しました。続けて、デプロイタイプは 「開発及びテスト」を選択します。

② ネットワークにて「 パブリックアクセス」を選択、きめ細かなアクセスコントロールは「 マスターユーザーの作成」を選択してユーザーとパスワードを入力する。それ以外はdefaultにして「作成」ボタンを押してドメインの作成を進行します。

④ ドメインの作成を確認

※ドメインの作成には10分ほど時間がかかります。

2)Amazon OpenSearch Serviceを利用してドキュメントを検索する

①  検索するためは Inverted index を作成するプロセスが必要です。テキスト検索を実行するためにドキュメントをインデクシングするインデックスを生成します。OpenSearch DashboardのDev Toolを使用してRest APIで新しいインデックスを作成します。

② 上記のようにOpenSearch Dashboards の URLをクリックして OpenSearch Dashboardに移動します。

③「クラスターの作成」にて設定した id(feel)と passwordでログインします。個人的なテスト用なのでtenantをPrivateにして Confirmをクリックします。

④ Home画面からNavigation Menu > Management > DevToolsに入り、下記のようにコンソールからPUTと GETなどの作業が可能であり、下記のようにAmazon Elasticsearch Serviceと同じくターミナル環境からスクリプト実行することも可能です。

⑤ コンソールからPUTされている「movies.json」を確認します。

 

※Query Workbenchからクェリを使用して確認も可能です。

3)検索結果のビジュアライゼーション

①Dashboardのメニューから「 Visualze」を選択
※ビジュアライゼーションを行うには、まず実行するインデックスのインデックスパターンをOpenSearch Dashboardに登録する必要があります。 OpenSearch Dashboardのナビゲーションで、Management -> Stack Managementからインデックスパターンを登録してからビジュアライゼーションを行います。

② create your first visualizationをクリックして「Tag Cloud」を選択し、データソースを上記から作成した「movies」にする

③ 次のようにallが見える視覚化画面に進みます。

④ Bucketsで、Addを押してTagsをクリックします。

⑤ AggregationはTerms(※ 該当フィールドの Term単位で アグリゲーションするということでactor別にグルーピングしたのと同じです。)、Fieldはactor.keyword、Sizeは20に設定してUpdateボタンをクリックします。

⑥ カテゴリのタグクラウドビジュアライゼーションが完成しました。

4) まとめ

2021年9月に、AWSはAmazon ElasticSearch Serviceのサービス名をAmazon Opensearch Serviceに変更しました。3年前にAmazon ElasticSearch Serviceを利用する企業に技術支援をしたことがあり、Amazon Opensearch Serviceにサービス名が変更されたと聞いたとき、サービス名のみの変更で、新しい機能はないだろうという先入観を持っていました。

ところが今回のテストでAmazon Opensearch Serviceが持っているOpenSearchとOpenSearch-Dashboards機能を経験することにより、ElasticSearch Serviceで感じられなかったデザイン感とインデックス管理レポーティングなどの機能は今後を期待させるものでした。特にOpenSearchというオープンプロジェクトはすべてのソースを公開して十分なレビューをしてビルドを進行しているため、それを元に開発されたAmazon Opensearch Serviceの発展の可能性は無限だと考えられます。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら