𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
AWS OpenSearch入門|全文検索・ログ分析・ダッシュボード構築の実践ガイド

AWS OpenSearch入門|全文検索・ログ分析・ダッシュボード構築の実践ガイド

AWSOpenSearchElasticsearchログ分析2026年
目次

📚 この記事は「AWS 完全攻略シリーズ」の Episode 23 です。

⚡ 3秒でわかる!この記事のポイント
  • OpenSearchはElasticsearch互換の全文検索・ログ分析サービスで、マネージドで運用負荷を大幅削減
  • CloudWatch Logs・ALBログ・VPCフローログの集約分析基盤を30分で構築可能
  • OpenSearch/Elasticsearch経験を持つSESエンジニアは月単価70〜95万円が相場

「アプリケーションのログが散在していて、障害時の原因調査に時間がかかる」「全文検索機能を実装したいが、RDBのLIKE検索では性能が出ない」「Elasticsearchを自前で運用しているが、バージョンアップやスケーリングの管理が大変」——SES案件でインフラ運用や検索機能の開発に携わるエンジニアなら、こうした課題を抱えたことがあるでしょう。

Amazon OpenSearch Serviceは、これらの課題をAWSのマネージドサービスとして解決します。本記事では、AWSの基礎知識を前提に、OpenSearchの構築・運用・活用法をSESエンジニア向けに実践的に解説します。

Amazon OpenSearchとは

ElasticsearchからOpenSearchへ

Amazon OpenSearch Serviceは、オープンソースのOpenSearch(Elasticsearchのフォーク)をベースにしたマネージドサービスです。

項目Elasticsearch(自前運用)Amazon OpenSearch Service
構築EC2にインストール・設定コンソールから数クリック
スケーリングノード追加・リバランス手動ワンクリックでノード追加
バックアップスナップショット設定が必要自動スナップショット
セキュリティX-Pack等のプラグイン管理IAM・VPC・暗号化が統合
モニタリング自前でPrometheus等を構築CloudWatch連携が標準
コストEC2+EBS+運用工数インスタンス+ストレージのみ

OpenSearchの主要ユースケース

  1. 全文検索: ECサイトの商品検索、社内ドキュメント検索
  2. ログ分析: アプリケーションログ・アクセスログの集約・可視化
  3. セキュリティ分析(SIEM): VPCフローログ・CloudTrailの異常検知
  4. メトリクス可視化: ダッシュボードによるリアルタイム監視

OpenSearchクラスタの構築

基本アーキテクチャ

OpenSearchクラスタは以下のコンポーネントで構成されます:

[VPC]
  ├── [データノード] × 3(検索・インデックス処理)
  ├── [マスターノード] × 3(クラスタ管理 ※本番推奨)
  └── [UltraWarm ノード](低コストの温データ保存)

[外部連携]
  ├── Kinesis Data Firehose → OpenSearch(ログ取り込み)
  ├── Lambda → OpenSearch(カスタムETL)
  └── OpenSearch Dashboards(可視化・分析)

CloudFormationでのクラスタ構築

AWSTemplateFormatVersion: '2010-09-09'
Description: OpenSearch Domain

Resources:
  OpenSearchDomain:
    Type: AWS::OpenSearchService::Domain
    Properties:
      DomainName: my-search-domain
      EngineVersion: OpenSearch_2.11
      ClusterConfig:
        InstanceType: r6g.large.search
        InstanceCount: 3
        DedicatedMasterEnabled: true
        DedicatedMasterType: m6g.large.search
        DedicatedMasterCount: 3
        ZoneAwarenessEnabled: true
        ZoneAwarenessConfig:
          AvailabilityZoneCount: 3
      EBSOptions:
        EBSEnabled: true
        VolumeType: gp3
        VolumeSize: 100
        Iops: 3000
        Throughput: 125
      EncryptionAtRestOptions:
        Enabled: true
      NodeToNodeEncryptionOptions:
        Enabled: true
      DomainEndpointOptions:
        EnforceHTTPS: true
        TLSSecurityPolicy: Policy-Min-TLS-1-2-PFS-2023-10
      VPCOptions:
        SubnetIds:
          - !Ref PrivateSubnet1
          - !Ref PrivateSubnet2
          - !Ref PrivateSubnet3
        SecurityGroupIds:
          - !Ref OpenSearchSecurityGroup
      AccessPolicies:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:root'
            Action: 'es:*'
            Resource: !Sub 'arn:aws:es:${AWS::Region}:${AWS::AccountId}:domain/my-search-domain/*'

セキュリティ設定のベストプラクティス

設定項目推奨値理由
VPC配置必須パブリックアクセスを遮断
転送中の暗号化有効TLS 1.2以上でノード間通信を暗号化
保管時の暗号化有効KMSでデータを暗号化
細かいアクセス制御有効インデックス・ドキュメントレベルの認可
監査ログ有効アクセス履歴の記録

全文検索機能の実装

インデックス設計

全文検索で最も重要なのがインデックス設計です。適切なマッピングとアナライザーの設定が検索品質を左右します:

PUT /products
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "analysis": {
      "analyzer": {
        "japanese_analyzer": {
          "type": "custom",
          "tokenizer": "kuromoji_tokenizer",
          "filter": [
            "kuromoji_baseform",
            "kuromoji_part_of_speech",
            "ja_stop",
            "kuromoji_stemmer",
            "lowercase"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "japanese_analyzer",
        "fields": {
          "keyword": { "type": "keyword" }
        }
      },
      "description": {
        "type": "text",
        "analyzer": "japanese_analyzer"
      },
      "category": { "type": "keyword" },
      "price": { "type": "integer" },
      "tags": { "type": "keyword" },
      "created_at": { "type": "date" }
    }
  }
}

検索クエリの実装

GET /products/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "ワイヤレスイヤホン ノイズキャンセリング",
            "fields": ["name^3", "description"],
            "type": "cross_fields",
            "analyzer": "japanese_analyzer"
          }
        }
      ],
      "filter": [
        { "term": { "category": "オーディオ" } },
        { "range": { "price": { "gte": 5000, "lte": 30000 } } }
      ]
    }
  },
  "highlight": {
    "fields": {
      "name": {},
      "description": { "fragment_size": 150 }
    }
  },
  "aggs": {
    "price_ranges": {
      "range": {
        "field": "price",
        "ranges": [
          { "to": 10000 },
          { "from": 10000, "to": 20000 },
          { "from": 20000 }
        ]
      }
    }
  }
}

ログ分析基盤の構築

Kinesis Data Firehose でログを集約

複数のAWSサービスからOpenSearchにログを自動集約するパイプラインを構築します:

CloudWatch Logs → サブスクリプションフィルター → Kinesis Data Firehose → OpenSearch
ALBアクセスログ → S3 → Lambda → OpenSearch
VPCフローログ → CloudWatch Logs → Kinesis → OpenSearch

ログ分析ダッシュボードの構築

OpenSearch Dashboardsで以下のような可視化を構築します:

アプリケーション監視ダッシュボード:

  • リクエスト数の時系列グラフ(5xxエラー率のオーバーレイ)
  • レスポンスタイムのパーセンタイル(p50, p95, p99)
  • エンドポイント別のリクエスト分布
  • エラーログのリアルタイムストリーム

セキュリティダッシュボード:

  • 不審なIPアドレスからのアクセスヒートマップ
  • 認証失敗のトレンド
  • VPCフローログの拒否パケット分析

アラート設定

OpenSearchのアラート機能で、異常を即座に検知します:

{
  "name": "High Error Rate Alert",
  "type": "monitor",
  "schedule": {
    "period": {
      "interval": 5,
      "unit": "MINUTES"
    }
  },
  "inputs": [{
    "search": {
      "indices": ["app-logs-*"],
      "query": {
        "bool": {
          "must": [
            { "range": { "@timestamp": { "gte": "now-5m" } } },
            { "term": { "level": "ERROR" } }
          ]
        }
      }
    }
  }],
  "triggers": [{
    "name": "error_spike",
    "condition": {
      "script": {
        "source": "ctx.results[0].hits.total.value > 50"
      }
    },
    "actions": [{
      "name": "notify_slack",
      "destination_id": "slack-webhook-id",
      "message_template": {
        "source": "🚨 エラー急増: 過去5分で {{ctx.results[0].hits.total.value}} 件のエラーを検出"
      }
    }]
  }]
}

コスト最適化

ストレージ階層の活用

OpenSearchのUltraWarmコールドストレージを活用して、コストを大幅に削減できます:

ストレージ階層用途コスト比アクセス速度
ホット(通常ノード)直近7日のログ100%高速
UltraWarm8〜30日のログ約30%中速
コールドストレージ31日〜1年のログ約10%低速
{
  "policy": {
    "description": "Log lifecycle policy",
    "states": [
      {
        "name": "hot",
        "actions": [{ "rollover": { "min_size": "30gb", "min_index_age": "1d" } }],
        "transitions": [{ "state_name": "warm", "conditions": { "min_index_age": "7d" } }]
      },
      {
        "name": "warm",
        "actions": [{ "warm_migration": {} }],
        "transitions": [{ "state_name": "cold", "conditions": { "min_index_age": "30d" } }]
      },
      {
        "name": "cold",
        "actions": [{ "cold_migration": {} }],
        "transitions": [{ "state_name": "delete", "conditions": { "min_index_age": "365d" } }]
      },
      {
        "name": "delete",
        "actions": [{ "delete": {} }]
      }
    ]
  }
}

Serverless(サーバーレス)オプション

小規模な検索ワークロードにはOpenSearch Serverlessが選択肢になります:

項目OpenSearch(プロビジョニング)OpenSearch Serverless
課金インスタンス時間課金OCU(実際の使用量)課金
スケーリング手動(HPA可能)自動
最低コスト約$50/月〜約$350/月〜
適性大規模・安定ワークロード小規模・可変ワークロード

AWS OpenSearchアーキテクチャと活用パターン

SES現場でのOpenSearch案件

求められるスキルと単価相場

スキルレベル月単価相場求められるスキル
初級65〜75万円インデックス設計、基本的なクエリ
中級75〜90万円パフォーマンスチューニング、ログ基盤構築
上級90〜110万円大規模クラスタ設計、SIEM構築、マルチテナント

よくある案件パターン

  1. ECサイトの検索機能構築: 日本語全文検索(kuromoji)、ファセット検索、オートコンプリート
  2. ログ分析基盤の構築: マイクロサービスの集約ログ分析、ダッシュボード構築
  3. セキュリティ監視: CloudTrail/VPCフローログの異常検知、SIEM構築
  4. レガシー移行: 自前Elasticsearchクラスタからマネージドへの移行

まとめ:OpenSearchでSESエンジニアのスキルを広げる

Amazon OpenSearch Serviceは、全文検索とログ分析という2つの重要なユースケースをマネージドで提供するサービスです。

OpenSearchの3つのポイント:

  1. 全文検索: kuromoji日本語アナライザーで高精度な検索を簡単に実装
  2. ログ分析: Kinesis連携で複数ソースのログを集約し、ダッシュボードで可視化
  3. コスト最適化: UltraWarm/コールドストレージの階層管理でストレージコストを最大90%削減

OpenSearch/Elasticsearchスキルは、SES案件での幅広いポジションで求められています。本記事で紹介した実践テクニックを活用して、市場価値を高めましょう。

関連記事

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修