Uso de la operación de desplazamiento de eventos para exportar datos analíticos
Utilizar el/events/scroll operación para exportar 10,000 o más registros de eventos analíticos con la API REST.
El método estándar para recuperar datos de eventos analíticos con elAPI Connect API REST de análisis está usando el/events Llamada API. El/events La llamada API está optimizada para una recuperación rápida de los datos de eventos más recientes y está limitada a devolver un máximo de 10 000 registros de eventos API. Si desea recuperar más de 10.000 registros de eventos, utilice el/events/scroll API, que está optimizada para la recuperación de grandes conjuntos de datos de eventos analíticos.
Cuando consulta sus datos analíticos con/events/scroll , OpenSearch encuentra todos los registros de eventos que coinciden con su consulta y crea un puntero que se llama contexto de desplazamiento. Luego utiliza el contexto de desplazamiento para recuperar los datos del evento en lotes.
/events/scroll consultas simultáneamente y para eliminar el contexto de desplazamiento después de que se recuperen los datos del evento.Exportar eventos de análisis con/events/scroll
El/events/scroll La operación devuelve datos de eventos en lotes. Usted define el tamaño del lote en la primera llamada a/events/scroll y luego recuperar cada lote en llamadas posteriores. Debe realizar cada llamada posterior a/events/scroll dentro de un tiempo determinado, llamado tiempo de mantenimiento del contexto de desplazamiento. El procedimiento es el siguiente:
- haz el primero
/events/scrollllamar. Especifique el tamaño del lote y el tiempo de mantenimiento de la operación de desplazamiento. Por ejemplo, para devolver datos de eventos en lotes de 1000 y mantener activo el contexto de desplazamiento durante 10 minutos, PUBLICAR el siguiente JSON en/events/scroll:{ "size": 1000, # Return the first 1000 event records. "scroll": 10m # Keep the scroll context alive for 10 minutes. }sizedefine el tamaño del lote.scrolldefine el tiempo de mantenimiento y utiliza el formato <número><unidades>, Por ejemplo: 30s, 5m, 3h, 1d. El valor máximo parascrolles 1d.
Respuesta de ejemplo:{ "total": 5926, # The total events found that match the query. "scroll_id": "FGl....", # Scroll context id to be used to get the next batch. "events": [...] # First batch of event data. } - hacer el siguiente
/events/scrollllamar, especificando elscroll_idde la respuesta anterior:{ "size": 1000, "scroll_id": "<as returned from previous call>", "scroll": 10m }La API devuelve el siguiente lote de 1000 registros de eventos y un nuevoscroll_idpara la próxima llamada.Nota: Si tuscroll_idha caducado, se devuelve la siguiente respuesta:{ "status": 404, "message": [ { "trace": "7c7b3b11ee0e95b61452e8a78086d8e2", "errors": [ { "code": "search_context_missing_exception", "message": "No search context found for id [48420]", "more_info": "" } ] } ] }Si tu
scroll_idexpira, entonces debes comenzar de nuevo. Establezca un tiempo de mantenimiento más alto para el contexto de desplazamiento para permitir más tiempo para que se devuelvan los lotes de registros de eventos y el siguiente/events/scrollllamada a realizar. - continuar haciendo
/events/scrollllamadas, actualizando elscroll_idcada vez con la respuesta de la llamada anterior. - Después de la última llamada para recuperar los datos de su evento, elimine el contexto de desplazamiento con una POST para
/events/scroll/delete:{"scroll_id": "<as returned from previous call>"}Respuesta de ejemplo:{ "succeeded": true, "num_freed": 15 }Nota: El contexto de desplazamiento se elimina automáticamente cuando caduca, pero si tiene un tiempo de mantenimiento prolongado, se recomienda eliminarlo explícitamente para liberar recursos.
Ejemplo resuelto
/events/scroll API./events/scroll llamadas y actualizar elscroll_id cada llamada. Ver https://ibm.biz/apic-analytics-events-scroll para un ejemplo Python guion.- Obtenga un recuento del total de registros de eventos para decidir el tamaño de lote óptimo y la cantidad de llamadas a realizar:
curl -k -X GET --url 'https://example.api.connect.com/analytics/analytics/cloud/events/count' -H 'Authorization: Bearer <bearer_token>'{ "total": 12453 }Para 12453 eventos, un tamaño de lote de 1250 y un total de 10 llamadas pueden ser un buen equilibrio entre el tamaño de la salida y la cantidad de llamadas.
- Realice la primera solicitud, especificando el tamaño del lote de 1250 y un tiempo de mantenimiento del contexto de desplazamiento de 5 minutos:
curl -k -X POST -d '{"size": "1250", "scroll": "5m"}' --url 'https://example.api.connect.com/analytics/analytics/cloud/events/scroll' -H 'Content-Type: application/json' -H 'Authorization: Bearer <bearer_token>'Devuelve:{ "total": 12453, # The total events found that match the query. "scroll_id": "<scroll_id>", "events": [...] # First batch of 1250 events. } - Realizar la segunda solicitud, especificando el
scroll_iddevuelto de la solicitud anterior:curl -k -X POST -d '{"size": "1250", "scroll": "5m", "scroll_id": "<scroll_id from previous response>"}' --url 'https://example.api.connect.com/analytics/analytics/cloud/events/scroll' -H 'Content-Type: application/json' -H 'Authorization: Bearer <bearer_token>' - Repita la solicitud 8 veces más, actualizando el
scroll_idcon el resultado de la solicitud anterior cada vez.Dado que el total de eventos es 12453 y el tamaño del lote es 1250, la última solicitud devuelve solo 1203 eventos.
Cualquier solicitud posterior que realice con el
scroll_idDevuelve una matriz de eventos vacía. - Eliminar el contexto de desplazamiento:
curl -k -X POST -d '{"scroll_id": "<scroll_id from previous response>"}' --url 'https://example.api.connect.com/analytics/analytics/cloud/events/scroll/delete' -H 'Content-Type: application/json' -H 'Authorization: Bearer <bearer_token>'
Comparación de rendimiento de/events/scroll y/events
/events La API no puede recuperar más de 10000 eventos (ni lotes de 1000 o más), por lo que estos campos están marcados como n/a.| Tamaño de lote | Número de llamadas | /events hora |
/events/scroll hora |
|---|---|---|---|
| 100 | 10 | 7 | 9 |
| 500 | 2 | 3 | 4 |
| 1000 | 1 | n/d | 3 |
| 2000 | 1 | n/d | 5 |
| Tamaño de lote | Número de llamadas | /events hora |
/events/scroll hora |
|---|---|---|---|
| 100 | 100 | 67 | 75 |
| 500 | 20 | 27 premios | 32 |
| 1000 | 10 | n/d | 24 |
| 2000 | 5 | n/d | 20 |
| Tamaño de lote | Número de llamadas | /events hora |
/events/scroll hora |
|---|---|---|---|
| 100 | 1000 | n/d | 732 |
| 500 | 200 | n/d | 299 |
| 1000 | 100 | n/d | 258 |
| 2000 | 50 | n/d | 196 |
| Tamaño de lote | Número de llamadas | /events hora |
/events/scroll hora |
|---|---|---|---|
| 100 | 7603 | n/d | 5647 |
| 500 | 1521 | n/d | 2423 |
| 1000 | 761 | n/d | 2158 |
| 2000 | 381 | n/d | 1919 |