首页 / 问答 / [Elasticsearch]Elasticsearch(ES)如何查询并返回索引的全部数据记录呢?

[Elasticsearch]Elasticsearch(ES)如何查询并返回索引的全部数据记录呢?

Elasticsearch 6.16K 次浏览
0

在本地开发时,Elasticsearch(ES)存储着一个数据量较小(几千或者几万个文档)的索引。为了测试方便,现需要使用Elasticsearch的DSL查询语句或者其他方式将这个索引的都有文档全部查询出来,应该如何编写Elasticsearch(ES)的DSL查询语句呢,或者还有其他什么方式可以将此索引的文档全部查询出来呢?

回复 [×]
提交评论
请输入评论内容

1 个回答

  • 0

    注意:以下的DSL语句是在Elasticsearch 7.14.0 版本中测试和运行的。

    在Elasticsearch中,可以使用DSL的match_all来查询指定索引的全部文档,语句如下:

    以上语句会检索my-test-index索引中的全部文档,但由于Elasticsearch默认返回的size10,所以即使有几千条文档,但也只能返回满足条件的前10个文档。

    如果需要返回更多文档,则需设置DSL查询的from,size,sort这几个参数,如下:

    其中的from参数表示检索文档的偏移量,size表示要返回的文档个数,sort则是用于文档排序的参数。

    由于Elasticsearch的索引配置中最大结果窗口max_result_window默认值为10000,也就是from+size的最大值为10000。所以,如果你的文档超过了10000,此查询语句也只能最多返回前10000个文档记录。

    如果要返回超过10000条文档,可以调大max_result_window的值,但这会消耗更多的服务器资源,降低Elasticsearch服务的性能。

    此外,你还可以借助Scroll或者Search After来分页获取索引文档。

    Rector的个人主页

    Rector

    2021-08-27 回答

    我来回答