我有一个非常简单的问题。
我有一个包含 1600000 个比较大的文档的 elasticsearch 索引,我需要扫描索引以将其与经典的 sql 数据库同步。
我的文档包括 sql ID 和时间戳。
然后同步 sql db 和弹性索引,我只是顺序读取行和文档,都按 id 排序,比较 id 可以确定是否需要删除文档(比较是否定的),添加一个新文档sql 行(比较为正),如果比较为 0,我比较时间戳以了解是否需要更新文档。
它可以工作,但我观察到,当我提前阅读时,阅读文档会变慢很多。
我通过在索引上重复搜索来分块检索我的文档,每次都移动请求的“来自”字段,如下所示:
{
"from" : 0, "size" : 10000,
"fields" : ["idannonce","ts"],
"sort" : ["idannonce"],
"query" : "match_all" {}
}
当“from”为 1000000 时,这个简单的查询比它为 0 时慢很多。
这是正常行为吗?我认为它应该与“idannonce”字段被索引的时间大致相同,不是吗?
任何想法 ?有没有办法编写相同的查询,使其在恒定时间内运行?
谢谢