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
以便变量名称更符合含义。
我 运行 此查询与 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
以便变量名称更符合含义。