> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Elasticsearch

> Synchronisez les événements personnalisés d'Elasticsearch vers OneSignal pour déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur le comportement des utilisateurs.

export const DATA_TYPE_0 = "event document fields"

export const PLATFORM_0 = "Elasticsearch"

export const COLUMN_HEADER_0 = "Elasticsearch Field"

export const PROPERTIES_DESCRIPTION_0 = "Nested object or flattened fields"

## Vue d'ensemble

L'intégration OneSignal + Elasticsearch permet la synchronisation automatique des événements personnalisés de votre cluster Elasticsearch vers OneSignal. Cela vous permet de déclencher des Journeys automatisés et des campagnes de messagerie personnalisées basées sur les données comportementales des utilisateurs stockées dans votre moteur de recherche et d'analytique.

***

## Exigences

* Accès aux [Event Streams](/docs/en/event-streams) pour les événements de message sortants (Les limitations de forfait et les dépassements s'appliquent)
* Accès aux [Événements personnalisés](/docs/en/custom-events) pour la synchronisation des événements entrants (Les limitations de forfait et les dépassements s'appliquent)
* [Forfait de compte mis à jour](https://onesignal.com/pricing) (non disponible sur les applications gratuites)

### Elasticsearch

* **Cluster Elasticsearch** (version 7.0 ou supérieure recommandée)
* **Identifiants d'authentification** (clé API, nom d'utilisateur/mot de passe ou certificat)
* **Indices d'événements** contenant des données comportementales avec une structure de document appropriée
* **Accès réseau** de OneSignal à votre cluster Elasticsearch

***

## Configuration

<Steps>
  <Step title="Configurer l'accès à Elasticsearch">
    Assurez-vous que OneSignal peut se connecter à votre cluster Elasticsearch :

    **Pour Elasticsearch Cloud :**

    * Accédez à **Security** dans votre console Elasticsearch Cloud
    * Créez une clé API avec des autorisations de lecture pour les indices d'événements
    * Notez votre **Cloud ID** et votre **clé API**

    **Pour Elasticsearch auto-hébergé :**

    * Configurez l'authentification (authentification de base ou clé API)
    * Assurez-vous que votre cluster est accessible depuis les adresses IP de OneSignal
    * Notez l'**URL du point de terminaison** de votre cluster et les **identifiants**
  </Step>

  <Step title="Créer un utilisateur dédié (recommandé)">
    Créez un utilisateur dédié pour OneSignal avec un accès en lecture seule aux indices d'événements :

    ```json theme={null}
    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"]
        }
      ]
    }
    ```
  </Step>

  <Step title="Ajouter l'intégration dans OneSignal">
    Dans OneSignal, allez dans **Data > Integrations** et cliquez sur **Add Integration**.

    Sélectionnez **Elasticsearch** et fournissez :

    * **Cluster URL** : Votre point de terminaison Elasticsearch (par ex., `https://your-cluster.es.amazonaws.com`)
    * **Authentication Method** : API Key, Basic Auth ou Certificate
    * **Username/Password** ou **API Key** : Identifiants d'authentification
    * **Cloud ID** (si vous utilisez Elasticsearch Cloud) : L'ID Cloud de votre déploiement
  </Step>

  <Step title="Configurer la source de données d'événements">
    Spécifiez l'index Elasticsearch contenant vos données d'événements :

    * **Index Pattern** : Index ou modèle d'index contenant les événements (par ex., `events-*`)
    * **Event Query** : Requête DSL Elasticsearch optionnelle pour filtrer les documents d'événements
    * **Time Field** : Champ d'horodatage pour le filtrage temporel (par ex., `@timestamp`)

    Vos documents d'événements doivent contenir des champs pour :

    * Nom/type d'événement (String)
    * Identifiant utilisateur (String)
    * Horodatage de l'événement (Date)
    * Propriétés d'événement supplémentaires (Object)
  </Step>

  <Step title="Tester la connexion">
    Cliquez sur **Test Connection** pour vérifier que OneSignal peut accéder à votre cluster Elasticsearch et lire les données d'événements.
  </Step>
</Steps>

***

### Mappage des données d'événement

Mappez vos {DATA_TYPE_0} {PLATFORM_0} au format des événements personnalisés de OneSignal :

| Champ OneSignal | {COLUMN_HEADER_0} | Description                     | Requis |
| --------------- | ----------------- | ------------------------------- | ------ |
| `name`          | `event_name`      | Identifiant de l'événement      | Oui    |
| `external_id`   | `user_id`         | Identifiant de l'utilisateur    | Oui    |
| `timestamp`     | `event_timestamp` | Quand l'événement s'est produit | Non    |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0}      | Non    |

***

## Configuration avancée

### Filtrage Query DSL

Utilisez Elasticsearch Query DSL pour filtrer et transformer les données d'événements avant la synchronisation avec OneSignal :

```json theme={null}
{
  "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.*"
  ]
}
```

### Configuration du modèle d'index

Interrogez efficacement plusieurs indices :

* **Indices temporels** : Utilisez des modèles comme `events-2024-*` pour les données partitionnées par temps
* **Routing** : Assurez un routage cohérent pour les requêtes basées sur l'utilisateur
* **Alias** : Utilisez des alias d'index pour une gestion simplifiée

### Optimisation des performances

Optimisez les requêtes pour de gros volumes d'événements :

* **Filtrage de champs** : Utilisez le filtrage `_source` pour récupérer uniquement les champs nécessaires
* **API Scroll** : Pour les grands ensembles de résultats, OneSignal utilise la pagination par défilement
* **Date math** : Utilisez les opérations mathématiques de date Elasticsearch pour un filtrage temporel efficace

<Warning>
  Assurez-vous que votre cluster Elasticsearch dispose de ressources suffisantes pour gérer les requêtes de OneSignal sans affecter les autres applications utilisant le cluster.
</Warning>

***

## FAQ

### À quelle fréquence OneSignal synchronise-t-il les événements depuis Elasticsearch ?

OneSignal synchronise les données d'événements en fonction de votre planning configuré, avec un intervalle minimum de 15 minutes.

### Puis-je synchroniser les événements de plusieurs indices Elasticsearch ?

Oui, vous pouvez utiliser des modèles d'index (par ex., `events-*`) pour interroger plusieurs indices, ou créer plusieurs intégrations pour différents groupes d'index.

### Que se passe-t-il si mon cluster Elasticsearch est temporairement indisponible ?

OneSignal réessayera les connexions avec un délai exponentiel. La synchronisation des événements reprendra automatiquement une fois que votre cluster sera à nouveau accessible.
