GCP上のプロジェクトとElasticsearch Serviceの連携について

GCP上のプロジェクトにFirebaseでホスティングをしてSPAを開発しています。
開発しているSPAでは、文字列検索によって目的のコンテンツの情報を取得しており、
現在はローカルサーバ上に立てたDockerにElasticsearchのインデックスを作成してそこから
検索結果の情報を取得しています。
ローカルでElasticsearchを使用する場合、そのローカルサーバを立ててるPCが何らかの原因で故障して停止した場合、SPAからの検索が不可能になるためElasticsearch自体をクラウドから使用することを検討したところ、GCPでElasticsearch Serviceが使用できることがわかりました。

まずトライアルでインスタンスを作成するところまではできたのですが、SPAを立てているGCP上のプロジェクトからそのインスタンスを使う方法がわからない状況です。

わかりにくい長文で申し訳ないですが、回答可能な方はご回答いただけると大変助かります。

こんにちわ

SPAがどのような機能を持つ画面かわかりませんが、
Elasticsearchにクエリを投げている部分があるかと思います。
たぶん そのクエリの投げ先は、http://localhost:9200/~ などとなさっているのではないでしょうか。

その部分をElasticsearch Serviceのエンドポイントに変更いただくと良いのでは?と思います。
localhost:9200を何に変更すれば良いのかは、Elasticsearch ServiceのCopy Endpoint URLのところを選択すれば得られます。

例えば、こんなURLになっているかと思います。

https://123456789012345678901234567890.asia-northeast1.gcp.cloud.es.io:9243/

localhost:9200 の部分を、https://ホスト名:9243と書き換えていただくと連携できるかと思います。

https://ホスト名:9243 でアクセスすると、https://localhost:9200 を開いたときと同じなので、イメージできるかと。

なお、ポート番号は不変(9243固定)だったように記憶しています。

見当違いの内容でしたらすみません。

1 Like

tsgkdtさん

こんにちは。ご回答いただき、ありがとうございます。
アプリにはクエリを投げている箇所があり、そこのエンドポイントをElasticsearch Serviceでインスタンスを作成した際に払い出されるEndpoint URLで置き換えればいけるのではないかとのことなので、
試してみようと思います。

検索やindexの作成、データの登録等も払い出されたエンドポイントに対してcurlコマンドを投げて
実施するという認識でいますが、合ってますでしょうか?

補足しておきます。

つまるところ、何をするにしてもElasticsearchのエンドポイントに対してリクエストを投げるのですが、
curlで頑張るよりは簡単かもしれない方法があるので以下紹介してみます。
既知の内容があるかもしれませんが、ご容赦ください。

Elasticsearch Serviceでクラスターを構築した際に、Kibanaが1つ起動しているかと思います。

indexの作成やindexの中身の設定については、補完やサジェストをしてくれるという点でKibanaのDev toolsの中にあるConsoleというところで実行するのも便利です。

画面イメージを添付します。

データの登録などは、1つ1つcurlで頑張って入れるのは大変かもしれません。
データを入れるツールとしてLogstashがあります。入れたいデータの種類によっては、これを使うことも検討できるかと思います。

https://www.elastic.co/guide/en/logstash/current/connecting-to-cloud.html

ご参考になれば。

1 Like

回答ありがとうございます。
Logstashについて聞きたいのですがこのツール自体はElasticsearch Service内でプラグインとして
用意されているものではなく、別途ユーザのローカルにインストールを行って使用するものなのでしょうか?

Logstashは、Elasticsearch Serviceのプラグインではなく、どこかのサーバーにインストールして動かしてもらうものになります。

構成のイメージは、以下のスライドが参考になるかと思います。

1 Like