> ## 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

> Sincronice eventos personalizados desde Elasticsearch a OneSignal para activar Journeys automatizados y campañas de mensajería personalizadas basadas en el comportamiento del usuario.

export const PLATFORM_0 = "Elasticsearch"

export const DATA_TYPE_0 = "event document fields"

export const COLUMN_HEADER_0 = "Elasticsearch Field"

export const PROPERTIES_DESCRIPTION_0 = "Nested object or flattened fields"

## Descripción general

La integración de OneSignal + Elasticsearch permite la sincronización automática de eventos personalizados desde su clúster de Elasticsearch a OneSignal. Esto le permite activar Journeys automatizados y campañas de mensajería personalizadas basadas en datos de comportamiento del usuario almacenados en su motor de búsqueda y análisis.

***

## Requisitos

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### Elasticsearch

* **Clúster de Elasticsearch** (versión 7.0 o superior recomendada)
* **Credenciales de autenticación** (clave API, nombre de usuario/contraseña o certificado)
* **Índices de eventos** que contienen datos de comportamiento con estructura de documento adecuada
* **Acceso de red** desde OneSignal a su clúster de Elasticsearch

***

## Configuración

<Steps>
  <Step title="Configurar acceso a Elasticsearch">
    Asegúrese de que OneSignal pueda conectarse a su clúster de Elasticsearch:

    **Para Elasticsearch Cloud:**

    * Navegue a **Security** en su consola de Elasticsearch Cloud
    * Cree una clave API con permisos de lectura para índices de eventos
    * Anote su **Cloud ID** y **API Key**

    **Para Elasticsearch autohospedado:**

    * Configure la autenticación (autenticación básica o clave API)
    * Asegúrese de que su clúster sea accesible desde las direcciones IP de OneSignal
    * Anote la **URL del endpoint** del clúster y las **credenciales**
  </Step>

  <Step title="Crear usuario dedicado (recomendado)">
    Cree un usuario dedicado para OneSignal con acceso de solo lectura a los índices de eventos:

    ```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="Agregar integración en OneSignal">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.

    Seleccione **Elasticsearch** y proporcione:

    * **Cluster URL**: Su endpoint de Elasticsearch (por ejemplo, `https://your-cluster.es.amazonaws.com`)
    * **Authentication Method**: API Key, Basic Auth o Certificate
    * **Username/Password** o **API Key**: Credenciales de autenticación
    * **Cloud ID** (si usa Elasticsearch Cloud): Su Cloud ID de implementación
  </Step>

  <Step title="Configurar fuente de datos de eventos">
    Especifique el índice de Elasticsearch que contiene sus datos de eventos:

    * **Index Pattern**: Índice o patrón de índice que contiene eventos (por ejemplo, `events-*`)
    * **Event Query**: Query DSL de Elasticsearch opcional para filtrar documentos de eventos
    * **Time Field**: Campo de marca de tiempo para filtrado basado en tiempo (por ejemplo, `@timestamp`)

    Sus documentos de eventos deben contener campos para:

    * Nombre/tipo de evento (String)
    * Identificador de usuario (String)
    * Marca de tiempo del evento (Date)
    * Propiedades de evento adicionales (Object)
  </Step>

  <Step title="Probar la conexión">
    Haga clic en **Test Connection** para verificar que OneSignal pueda acceder a su clúster de Elasticsearch y leer datos de eventos.
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

***

## Configuración avanzada

### Filtrado Query DSL

Use Query DSL de Elasticsearch para filtrar y transformar datos de eventos antes de sincronizar con 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.*"
  ]
}
```

### Configuración de patrón de índice

Consulte eficientemente en múltiples índices:

* **Índices basados en tiempo**: Use patrones como `events-2024-*` para datos particionados por tiempo
* **Enrutamiento**: Asegure un enrutamiento consistente para consultas basadas en usuario
* **Alias**: Use alias de índice para una gestión simplificada

### Optimización de rendimiento

Optimice las consultas para grandes volúmenes de eventos:

* **Filtrado de campos**: Use filtrado `_source` para recuperar solo los campos necesarios
* **API Scroll**: Para conjuntos de resultados grandes, OneSignal usa paginación de scroll
* **Matemáticas de fecha**: Use matemáticas de fecha de Elasticsearch para filtrado eficiente basado en tiempo

<Warning>
  Asegúrese de que su clúster de Elasticsearch tenga suficientes recursos para manejar las consultas de OneSignal sin afectar otras aplicaciones que usan el clúster.
</Warning>

***

## Preguntas frecuentes

### ¿Con qué frecuencia OneSignal sincroniza eventos desde Elasticsearch?

OneSignal sincroniza datos de eventos según su programación configurada, con un intervalo mínimo de 15 minutos.

### ¿Puedo sincronizar eventos desde múltiples índices de Elasticsearch?

Sí, puede usar patrones de índice (por ejemplo, `events-*`) para consultar en múltiples índices, o crear múltiples integraciones para diferentes grupos de índices.

### ¿Qué sucede si mi clúster de Elasticsearch no está disponible temporalmente?

OneSignal reintentará las conexiones con retroceso exponencial. La sincronización de eventos se reanudará automáticamente una vez que su clúster sea accesible nuevamente.
