3
1

Amazon OpenSearch Service はじめの一歩:S3からGlueでデータをいれて全文検索っぽいことをクイックにやる

Last updated at Posted at 2024-03-30

はじめに

AWS上に既にある、またはこれから構築するデータ基盤でクイックに全文検索をしたい場合の選択として、Amazon OpenSearch Service を利用するのはありなのか、実際に動かして試しながら確認したときの記録を、いつかの思い出し用として記載しておこうと思います。
スクショをベースにしておいて、後でこんな感じのサービスだったというのを思い出せるようにしています。

前提

  • 2024/3/4に試した内容です。
  • OpenSearchはサーバーレス版のAmazon OpenSearch Serverlessが選択できますが、AWS Glueからはサーバーレス版は接続ができないようです。サーバーレス版ではないほうは後述しますが、接続できました。

やってみた

OpenSearchを使えるようにする

  • マネージド型クラスターを選んでドメインの作成を選択
    image.png

  • ドメインの内容を編集して作成(今回は基本デフォルトのまま実施
    デュアルスタック.png
    Pasted Graphic 525.png
    Pasted Graphic 526.png
    Pasted Graphic 527.png
    カスタムエンドポイント.png
    Pasted Graphic 529.png
    Pasted Graphic 530.png
    Pasted Graphic 531.png
    Pasted Graphic 532.png

  • ドメインが作成される
    Pasted Graphic 533.png

  • 作成したドメインの設定画面(上記)にある OpenSearch Dashboards URL にアクセスする
    Log in to OpenSearch Dashboards.png

  • ログインはマスターユーザーを登録しておけばできる(他にも方法はありそう)
    セキュリティ設定の編集.png

  • ログインした後にOpenSearch Dashboardsが表示される
    Pasted Graphic 538.png

AWS GlueでOpenSearchに接続できるようにする

  • OpenSearch用のシークレットを作成する
    image.png
    シークレットを設定.png
    Pasted Graphic 542.png

  • AWS Glueで接続を作成する(Step1)
    Pasted Graphic 543.png

    • Domain endpointはOpenSearchのダッシュボードより取得
    • Portは443
    • AWS SecretはOpenSearch用に作成済みのシークレット
    • Advanced Settingも必要(これをしないとGlueから繋げなかった。理由は調べていない)
      Pasted Graphic 554.png
  • AWS Glueで接続を作成する(Step2)
    Set properties.png

  • AWS Glueで接続を作成する(Step3)
    Pasted Graphic 545.png
    Pasted Graphic 546.png

AWS GlueでOpenSearchに接続できるようにする

  • GlueでデータソースをS3にする
    Pasted Graphic 549.png
  • GlueでデータターゲットをOpenSearchにする(インデックス名は「Sample」とする)
    Pasted Graphic 550.png
  • Run結果(Job Rundsのリストの一番上が今回のJob)
    Pasted Graphic 557.png
  • ドメインの情報を表示する画面上どうなっているか
    Pasted Graphic 558.png
    Pasted Graphic 559.png
    Glueで指定したインデックス「Sample」ができている
  • インデックス「Sample」の内容
    Pasted Graphic 561.png
  • OpenSearch Dashboards上はどうなっているか
    Pasted Graphic 562.png
    インデックス「Sample」の内容が確認できる

OpenSearchでクエリーしてみる

  • 全件抽出
GET sample/_search
{
  "query": {
    "match_all": {}
  }
}

Pasted Graphic 564.png

  • 条件指定抽出
GET sample/_search
{
  "query": {
    "match": {
      "COL1":"bbb"
    }
  }
}

Pasted Graphic 565.png

漫画「はじめの一歩」についてのWikipediaの記載を使ってOpenSearchでクエリーしてみる

  • 対象のデータをS3に格納後にGlueへ
    image.png

  • 「一歩」を含むテキストを検索

GET sample/_search
{
  "query": {
    "match_phrase": {
      "COL2": "一歩"
    }
  }
}

Pasted Graphic 569.png

「一歩」を含んだ項目の値をスコアと共に出してくれている。
もっといろんなクエリーの仕方がありそうだが、今回ははじめの一歩なのでいったんここまで。

まとめ

試してみて、OpenSearchの使い方についてはわからないことばかりではあるものの、クイックに導入して利用することができそうなことはわかりました。
自分の思い出し用ではありますが、取っ掛かりとして誰かの参考になれば幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1