Elasticsearch分页查询

Elasticsearch分页查询教程

我们在使用 ElasticsearchDSL 进行搜索时,还可以指定 from 和 size 两个字段来进行分页搜索。

Elasticsearch分页查询详解

语法

GET /indexname/_search { "query":{}, "from": startIndex, "size": pageSize }

参数

参数 描述
indexname 需要搜索的索引名
startIndex 从那一条记录开始返回
pageSize 分页的每页数据大小

说明

startIndex 从 0 开始,而不是从 1 开始。

案例

分页查询记录

我们在 Kibana 的控制台上,输入以下代码,新建一个文档

PUT /haicodernet/_doc/1 { "name" : "javascript", "desc" : "javascript module", "categorys" : 5, "author" : "jobs steven", "tags": [ "javascript", "vue" ], "index":"www.haicoder.net" }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

44_Elasticsearch分页搜索.png

我们看到,此时我们创建文档成功了,现在,我们再次输入以下代码,再次创建一条文档:

PUT /haicodernet/_doc/2 { "name" : "server", "desc" : "server module", "categorys" : 10, "author" : "cainiao pei", "tags": [ "server", "python" ], "index":"www.haicoder.net" }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

45_Elasticsearch分页搜索.png

同样,我们再次创建一条记录,使用如下命令:

PUT /haicodernet/_doc/3 { "name" : "tools", "desc" : "tools module", "categorys" : 15, "author" : "cainiao pei", "tags": [ "tools", "vim" ], "index":"www.haicoder.net" }

即,我们再次成功创建了一个文档,现在,我们使用 DSL 进行文档的分页搜索,具体命令如下:

GET /haicodernet/_search { "query":{ "match_all": {} }, "from":1, "size":1 }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

46_Elasticsearch分页搜索.png

我们看到,我们使用 DSL 分页查询了第二页的一条记录,结果告诉我们返回了一条记录,一共有三条记录,现在,我们, 再次使用如下命令,查询第三页数据,具体命令如下:

GET /haicodernet/_search { "query":{ "match_all": {} }, "from":2, "size":1 }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

47_Elasticsearch分页搜索.png

我们看到,再次返回了第三页的一条记录,同样,我们可以一次查询多条记录,具体命令如下:

GET /haicodernet/_search { "query":{ "match_all": {} }, "from":0, "size":3 }

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

48_Elasticsearch分页搜索.png

这次,我们设置了每页的页大小为 3,因此,返回了三条记录。

Elasticsearch分页查询总结

我们在使用 Elasticsearch 的 DSL 进行搜索时,还可以指定 from 和 size 两个字段来进行分页搜索。