LoginSignup
1
2

More than 3 years have passed since last update.

【プレビュー版検証】AWS Glue Elastic Viewsを使って、Elasticsearch Serviceの連携までをやってみた

Last updated at Posted at 2021-04-21

概要

AWS Glue Elastic Viewsのプレビュー版について、説明したいと思います。
あまり情報もなく、セットアップも画面UIも荒削りなので現時点ではプロダクト採用には難しいですがデータ同期がマネージドサービスで実現できることにメリットがありそうです。

前提

プレビューに申し込んでいること

こちらのフォームから申し込んでください。
約1週間後にAvailableになったよ〜って通知がメールできます。

背景

サーバーレス構成のデータの保存先として DynamoDBを利用しています。そのシステムに全文検索機能をはじめ、少し凝った検索機能を追加する場合、DynamoDBだけではなかなか実装が難しいと思います。

ステップ1

コスト優先ということでDynamoDB Streamsを利用して別のテーブルに検索語句を連携する方式を採用しました。
※以下の記事、大変参考にさせていただきました
DynamoDBで全文検索もどきをする

そして、お客様の検索条件の飽くなき探究心に運用が耐えられず、Amazon Auroraの移行を検討

ステップ2

Auroraに関しては、geometry型を用いた検索もしているのでアーキテクチャとしては悪くないのですがRDBの性質上、前方一致検索しか採用したくない・・・
(部分一致検索はFull Scanとなり、早晩運用が破綻すると考えたため)

ステップ3(これから)

ユーザビリティを考えると全文検索を実現したい。そのため、Elasticsearch Serviceを組み合わせて実現したいなぁ・・・と思っていた矢先、AWS Glue Elastic Viewsが発表される

環境構築

AWSからGetting Startedが公開されています。
英語のみでGoogle翻訳するとツラミですが、我慢しましょう・・・

DynamoDB

すでに存在するテーブルを利用するので割愛

Amazon ES domain

Create the Amazon ES domainを参考に作成をしてください。
また、チュートリアルの簡易さを優先してドメインはPublicに設定しているようです。各自のセキュリティポリシーに合わせて検討ください

AWS Glue EV

サービス一覧には表示されないので直リンクAWS Glue Elastic Viewsでアクセスします

また、DynamoDBのテーブルは既に存在することをします。
そのうえで、AWS Glue Elastic Viewsで作業するのは
- テーブル作成及び有効化
- ビューの作成及びPartiQLの定義
- マテビューの有効化(ES or S3)で、データが連携される
image.png

テーブル作成

コンソールからDynamoDBのテーブル一覧が表示されるので、選択するだけです。
スキーマ定義が作成されます
image.png

※アクティベートを忘れないようにしてください。1分程度で有効化されます

ビュー作成

テーブルのページからビュー作成ボタンを押下してください
image.png

※ビューのページから作成ボタンを押下すると、PartiQLの設定などを手動で記述する必要があります

ビュー名のみ任意で設定して、その他はデフォルト値のまま作成します
image.png

マテビュー作成

右上のボタンを押下します
image.png
※アクティベートを忘れないようにしてください。1分程度で有効化されます

addターゲットを押下します
image.png

Elasticsearch Serviceを選択し、チュートリアルで作成した ES Domainを選択してください
index nameはES内に確保される領域ですが、今回はtestを作成します
image.png

マテビュー実体化

赤枠のボタンを押下します
image.png

Elasticsearch Serviceの確認

マテビューで定義したインデックスを確認します
image.png

約7万件作成されるまでに1分程度

マテビューでフィルター

record_timeでフィルターをかけ、Elasticsearch Serviceに期待する件数のみ連携されるか、確認します
image.png
※今回は200件を期待
※文字列をダブルクォーテーションで括ると上手く動作しませんでした。

約1時間後に全件連携された。どこがボトルネックになっているかわからず。
image.png

余談

取得元のDynamoDBのテーブルには約500万件のデータがありましたが、Elasticsearch Service側のパフォーマンスの限界に達していました。このあたりは運用に合わせてチューニングが必要になると思われます
image.png

まとめ

PartiQLを上手く利用できれば、ESのボリュームサイズも配慮しながら連携できそうです
コスト面で許容できそうなら、プロダクションにも採用していきたいと思います

1
2
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
1
2