elasticsearch未分类的大小/索引时的分页

时间:2014-09-24 10:20:16

标签: pagination elasticsearch

我正在使用from/size pagination迭代一个大的未排序的查询结果集,同时索引部分查询结果集的文档。忽略scroll/scan对于我的场景更为高效解决方案的事实,我能期待一致的结果吗?

据我所知,如果我同时索引属于结果集的文档,我应该会发现重复和遗漏的结果。在这种情况下,我正在索引结果集的一部分的文档,我不确定由于这种分页策略,我得到的不一致结果是否是预期的行为。

我使用的是elasticsearch版本1.2.2。我已经验证了查询的构造与文档一致。

{
    "from" : 0, "size" : 50000,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

-

{
    "from" : 50000, "size" : 50000,
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

始终返回正确数量的文件(约260万份),大多数情况下只有少量重复文件代替正确的文件(约10份)。

2 个答案:

答案 0 :(得分:1)

Deep Pagination不能被视为保存,因为它通常跨越多个分片(https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html)执行。因此,即使不同时索引(这肯定会破坏你的分页),在后台不时会有分片的合并。当发生这种情况时,您可能会遗失一份文件并获得重复版本。

所以:滚动/扫描。

答案 1 :(得分:0)

结果不一致的问题可以使用滚动/扫描分页而不是/ size分页来解决。

我不确定我是否支持使用from / size分页,但getting started文档似乎表明它是。这可能表示弹性搜索版本1.2.2的/ size分页中存在错误,但我还没有进行必要的测试来识别或验证这一点。