OpenSearch
全文検索、ログ分析、可視化を提供するオープンソースの検索・分析エンジン
AWSデータベース
OpenSearch とは
OpenSearch は、Elasticsearch からフォークされたオープンソースの検索・分析エンジンで、全文検索、ログ分析、リアルタイムダッシュボードを提供する。2021 年に AWS が Elasticsearch のライセンス変更を受けてフォークした。Amazon OpenSearch Service としてマネージドサービスが提供されている。
主な用途
| 用途 | 具体例 |
|---|---|
| 全文検索 | EC サイトの商品検索、ドキュメント検索 |
| ログ分析 | CloudWatch Logs → OpenSearch → ダッシュボード |
| メトリクス可視化 | OpenSearch Dashboards (旧 Kibana) |
| セキュリティ分析 | SIEM (Security Information and Event Management) |
DynamoDB との使い分け
| 観点 | DynamoDB | OpenSearch |
|---|---|---|
| クエリ | キーベースの検索 | 全文検索、ファジー検索、集計 |
| データモデル | キーバリュー / ドキュメント | 転置インデックス |
| 適するケース | CRUD、トランザクション | 検索、ログ分析 |
| 一貫性 | 強い整合性 | 結果整合性 |
DynamoDB は「userId = 123 の注文を取得」に適し、OpenSearch は「"TypeScript 入門" を含む記事を検索」に適している。
CDC で DynamoDB と同期
[DynamoDB] → [DynamoDB Streams] → [Lambda] → [OpenSearch]
DynamoDB をプライマリデータストアとし、DynamoDB Streams + Lambda で OpenSearch に同期する。検索は OpenSearch、CRUD は DynamoDB で行う。
OpenSearch Serverless
OpenSearch Serverless は、クラスターの管理が不要なサーバーレスモードだ。OCU (OpenSearch Compute Unit) 単位で課金される。
クエリ例
// 全文検索
GET /products/_search
{
"query": {
"multi_match": {
"query": "TypeScript 入門",
"fields": ["title^2", "description", "tags"]
}
}
}
// ファジー検索 (タイポ許容)
{
"query": {
"fuzzy": { "title": { "value": "TypeScrpt", "fuzziness": "AUTO" } }
}
}
さらに掘り下げるなら関連書籍が参考になる。