Elasticsearch分页溢出

时间:2015-07-25 14:42:32

标签: php elasticsearch pagination

我使用php客户端运行此查询:

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

我总共有3份文件应该退回。使用$ page = 0搜索会按预期返回3个文档。

但是,使用$ page = 1搜索会返回2个文档,而$ page = 2会返回1个文档,而使用$ page = 3的搜索会返回0个文档。

可能是什么问题?

如果我使用页面大小,溢出仍然存在:最后一个合法的值页面会溢出到下一页,其值减少一个!

我正在一个或两个节点上测试它,包含3个主要和1个副本分片。

1 个答案:

答案 0 :(得分:0)

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

  • 从偏移0开始(即$page = 0),您将获得3份文件
  • 从偏移1开始(即$page = 1),您将获得2份文件
  • 从偏移2开始(即$page = 2),您将获得1份文件
  • 从第3个偏差开始(即$page = 3),您将获得0个文件

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