Elasticsearch 分页溢出

Elasticsearch pagination spillage

我 运行 此查询与 php 客户端:

$params["body"] = [
            "from" => $page,
            "query" => ["filtered" => ["filter" => ["bool" => [
                            "must" => [
                                ["term" => ["user" =>  $userId]],
                                ["term" => ["activitySeen" =>  false]]
                            ]
                        ]
                    ]
                ]
            ],
            "size" => 5,
        ];

我总共有 3 份文件需要退回。按预期搜索 $page = 0 returns 3 个文档。

但是,搜索 $page = 1 returns 2 个文档,搜索 $page = 2 returns 1 个文档,搜索 $page = 3 returns 0 个文档。

可能是什么问题?

如果我调整页面大小,溢出仍然存在:值的最后一个合法页面溢出到下一页,值少了一个!

我正在一个或两个具有 3 个主分片和 1 个副本分片的节点上对其进行测试。

from parameter不是一个页面而是一个偏移量,所以你得到的是正确的。

  • 从偏移量 0(即 $page = 0)开始,您将获得 3 个文档
  • 从偏移量 1(即 $page = 1)开始,您将获得 2 个文档
  • 从偏移量 2(即 $page = 2)开始,您得到 1 个文档
  • 从偏移量 3(即 $page = 3)开始,您得到 0 个文档

您应该将 $page 重命名为 $from 以便变量名称更符合含义。