scroll
查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询。游标查询会取某个时间点的快照数据。 查询初始化之后索引上的任何变化会被它忽略。 它通过保存旧的数据文件来实现这个特性,结果就像保留初始化时的索引视图一样。
Go olivere elastic基础:golang中使用elasticsearch之olivere elastic汇总
环境
Go mod包:
github.com/olivere/elastic/v7
Elasticsearch版本:v7
游标查询
do, err := client.Scroll(). // 游标滚动查询
Index(IndexName).
Query(condition.Query()).
Scroll("1m"). // 保持游标查询窗口一分钟
Size(10).
Do(context.Background())
if err !=nil {
panic(err)
}
scrollId := do.ScrollId
fmt.Println(scrollId) // 生成当次的游标ID
fmt.Println(do.Hits.Hits) // 第一部分数据
滚动游标数据
for {
result, _ := dao.es.Scroll("1m").
ScrollId(scrollId). //通过游标id查询
Do(context.Background())
if len(result.Hits.Hits) <= 0 { // 跳出循环滚动
break
}
fmt.Println(result.Hits.Hits) // 游标滚动数据
}
作用
- 处理大批量的文档查询
- 游标分页查询