メインコンテンツへスキップ

概要

OneSignal + Elasticsearch統合により、ElasticsearchクラスターからOneSignalへのカスタムイベントの自動同期が可能になります。これにより、検索および分析エンジンに保存されたユーザー行動データに基づいて、自動化されたJourneyとパーソナライズされたメッセージングキャンペーンをトリガーできます。

要件

  • アウトバウンドメッセージイベント用のEvent Streamsへのアクセス(プランの制限と超過料金が適用されます)
  • インバウンドイベント同期用のCustom Eventsへのアクセス(プランの制限と超過料金が適用されます)
  • 更新されたアカウントプラン(無料アプリでは利用できません)

Elasticsearch

  • Elasticsearchクラスター(バージョン7.0以上を推奨)
  • 認証資格情報(APIキー、ユーザー名/パスワード、または証明書)
  • 適切なドキュメント構造を持つ行動データを含むイベントインデックス
  • OneSignalからElasticsearchクラスターへのネットワークアクセス

セットアップ

1

Elasticsearchアクセスを構成する

OneSignalがElasticsearchクラスターに接続できることを確認します:Elasticsearch Cloudの場合:
  • Elasticsearch CloudコンソールのSecurityに移動します
  • イベントインデックスの読み取り権限を持つAPIキーを作成します
  • Cloud IDAPI Keyをメモします
セルフホストElasticsearchの場合:
  • 認証を構成します(基本認証またはAPIキー)
  • OneSignalのIPアドレスからクラスターにアクセスできることを確認します
  • クラスターのエンドポイントURL資格情報をメモします
2

専用ユーザーを作成する(推奨)

イベントインデックスへの読み取り専用アクセスを持つOneSignal専用ユーザーを作成します:
PUT _security/user/onesignal_reader
{
  "password": "strong_password",
  "roles": ["onesignal_events_reader"]
}

PUT _security/role/onesignal_events_reader
{
  "indices": [
    {
      "names": ["events-*", "user_events"],
      "privileges": ["read", "view_index_metadata"]
    }
  ]
}
3

OneSignalで統合を追加する

OneSignalで、Data > Integrationsに移動し、Add Integrationをクリックします。Elasticsearchを選択し、次を提供します:
  • Cluster URL:Elasticsearchエンドポイント(例:https://your-cluster.es.amazonaws.com
  • Authentication Method:APIキー、基本認証、または証明書
  • Username/PasswordまたはAPI Key:認証資格情報
  • Cloud ID(Elasticsearch Cloudを使用している場合):デプロイメントのCloud ID
4

イベントデータソースを構成する

イベントデータを含むElasticsearchインデックスを指定します:
  • Index Pattern:イベントを含むインデックスまたはインデックスパターン(例:events-*
  • Event Query:イベントドキュメントをフィルタリングするためのオプションのElasticsearch Query DSL
  • Time Field:時間ベースのフィルタリングのためのタイムスタンプフィールド(例:@timestamp
イベントドキュメントには次のフィールドが含まれている必要があります:
  • イベント名/タイプ(String)
  • ユーザー識別子(String)
  • イベントタイムスタンプ(Date)
  • 追加のイベントプロパティ(Object)
5

接続をテストする

Test Connectionをクリックして、OneSignalがElasticsearchクラスターにアクセスし、イベントデータを読み取れることを確認します。

イベントデータマッピング

をOneSignalのカスタムイベント形式にマッピングします:
OneSignalフィールド説明必須
nameevent_nameイベント識別子はい
external_iduser_idユーザー識別子はい
timestampevent_timestampイベントが発生した時刻いいえ
propertiesevent_dataいいえ

高度な構成

Query DSLフィルタリング

OneSignalに同期する前に、Elasticsearch Query DSLを使用してイベントデータをフィルタリングおよび変換します:
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "@timestamp": {
              "gte": "now-7d"
            }
          }
        },
        {
          "terms": {
            "event_name": ["purchase", "signup", "upgrade"]
          }
        }
      ],
      "must_not": [
        {
          "term": {
            "test_user": true
          }
        }
      ]
    }
  },
  "_source": [
    "event_name",
    "user_id",
    "@timestamp",
    "properties.*"
  ]
}

インデックスパターン構成

複数のインデックス全体を効率的にクエリします:
  • 時間ベースのインデックス:時間分割データにはevents-2024-*のようなパターンを使用します
  • ルーティング:ユーザーベースのクエリに対して一貫したルーティングを確保します
  • エイリアス:簡素化された管理のためにインデックスエイリアスを使用します

パフォーマンスの最適化

大量のイベントボリュームに対してクエリを最適化します:
  • フィールドフィルタリング:必要なフィールドのみを取得するために_sourceフィルタリングを使用します
  • Scroll API:大きな結果セットの場合、OneSignalはスクロールページネーションを使用します
  • 日付計算:効率的な時間ベースのフィルタリングにはElasticsearch日付計算を使用します
Elasticsearchクラスターが、クラスターを使用している他のアプリケーションに影響を与えることなく、OneSignalのクエリを処理するのに十分なリソースを持っていることを確認してください。

FAQ

OneSignalはElasticsearchからどのくらいの頻度でイベントを同期しますか?

OneSignalは、構成されたスケジュールに基づいてイベントデータを同期し、最小間隔は15分です。

複数のElasticsearchインデックスからイベントを同期できますか?

はい。インデックスパターン(例:events-*)を使用して複数のインデックス全体をクエリするか、異なるインデックスグループに対して複数の統合を作成できます。

Elasticsearchクラスターが一時的に利用できない場合はどうなりますか?

OneSignalは指数バックオフで接続を再試行します。クラスターが再びアクセス可能になると、イベント同期は自動的に再開されます。