Como rolar dados usando Scroll API elasticsearch
eu sou novo no elk stack
Eu tentei com isso, mas não obtive o fluxo de trabalho ..
por exemplo executado abaixo da consulta de pesquisa
POST <index-name>/_search?scroll=2m
{
"query": {"match_all": {}}
}
- e obtivemos o scroll_id dessa consulta, em seguida, tentei Recuperar o próximo lote de resultados para uma pesquisa de rolagem.
GET /_search/scroll
{
"scroll_id" : "<scroll_id>"
}
- obteve resultado na primeira vez
"took" : 2,
"timed_out" : false,
"terminated_early" : true,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 13059,
"relation" : "eq"
}
- minha pergunta é por que estou recebendo um erro quando tentei rolar novamente usando o mesmo scroll_id
"caused_by" : {
"type" : "search_context_missing_exception",
"reason" : "No search context found for id"
- Versões usadas
Kibana 7.9.3
Elastic Search 7.9.3
Respostas
O scroll_idvalor muda a cada resposta. Portanto, a próxima chamada de pesquisa precisa usar o novo ID de rolagem da resposta de pesquisa anterior.
Você começou corretamente com
POST <index-name>/_search?scroll=2m
{
"query": {"match_all": {}}
}
Na resposta que você obtém, um campo chamado _scroll_idcontém o próximo ID de rolagem para usar na próxima chamada (como um cursor), vamos chamá-lo scroll_id_1:
GET /_search/scroll
{
"scroll_id" : "<scroll_id_1>",
"scroll": "2m"
}
Na próxima resposta, você obtém um novo _scroll_idvalor (vamos chamá-lo scroll_id_2) que precisa ser usado na próxima chamada:
GET /_search/scroll
{
"scroll_id" : "<scroll_id_2>",
"scroll": "2m"
}
E você continua fazendo isso até obter um conjunto de resultados vazio, momento em que pode limpar o contexto de pesquisa
DELETE /_search/scroll
{
"scroll_id" : "<scroll_id_n>"
}