Cómo desplazar datos usando Scroll API elasticsearch
soy nuevo en elk stack
He intentado con esto pero no obtengo el flujo de trabajo.
por ejemplo ejecutado debajo de la consulta de búsqueda
POST <index-name>/_search?scroll=2m
{
"query": {"match_all": {}}
}
- y obtuve el scroll_id de esta consulta y luego intenté Recuperar el siguiente lote de resultados para una búsqueda de desplazamiento.
GET /_search/scroll
{
"scroll_id" : "<scroll_id>"
}
- obtuve resultado la primera vez
"took" : 2,
"timed_out" : false,
"terminated_early" : true,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 13059,
"relation" : "eq"
}
- mi pregunta es por qué recibo un error cuando intenté desplazarme de nuevo usando el mismo scroll_id
"caused_by" : {
"type" : "search_context_missing_exception",
"reason" : "No search context found for id"
- Versiones utilizadas
Kibana 7.9.3
Elastic Search 7.9.3
Respuestas
El scroll_idvalor cambia en cada respuesta. Entonces, la próxima llamada de búsqueda debe usar el nuevo ID de desplazamiento de la respuesta de búsqueda anterior.
Empezaste correctamente con
POST <index-name>/_search?scroll=2m
{
"query": {"match_all": {}}
}
En la respuesta que obtiene, un campo llamado _scroll_idcontiene el siguiente id de desplazamiento para usar en la siguiente llamada (como un cursor), llamémoslo scroll_id_1:
GET /_search/scroll
{
"scroll_id" : "<scroll_id_1>",
"scroll": "2m"
}
En esa siguiente respuesta, obtienes un nuevo _scroll_idvalor (llamémoslo scroll_id_2) que necesitas usar para la próxima llamada:
GET /_search/scroll
{
"scroll_id" : "<scroll_id_2>",
"scroll": "2m"
}
Y continúe haciéndolo hasta que obtenga un conjunto de resultados vacío, momento en el que puede borrar el contexto de búsqueda
DELETE /_search/scroll
{
"scroll_id" : "<scroll_id_n>"
}