如何让elasticsearch一次返回10000条以上的结果?ES 似乎不遵守 index.max_result_window 设置

Rol*_*ndo 3 elasticsearch

我尝试根据文档创建索引然后使用:

PUT indexname/_settings
{
      "index.max_result_window": 20000
}
Run Code Online (Sandbox Code Playgroud)

当我获取设置时,我看到设置已设置,但每当我对其进行查询时,我都会不断获得 10,000 个结果。我尝试使用设置集创建索引,但这也不起作用。

我还尝试在进行搜索查询时包含 11,000 的大小参数,但它仍然没有返回。

我需要做什么才能返回大于 10,000 的结果?

是否需要对节点应用一些设置,或者对索引应用一些其他设置才能使其正常工作?

我使用的是最新版本7.3.1。

Tar*_*sam 7

您可以使用scroll API在elasticsearch中检索超过10000条记录,默认情况下,10000是返回文档数的上限。

Scroll API 的基本作用是按块获取文档,这些文档的大小可以由我们自定义。我们可以通过使用大小和时间值来控制返回的文档集的大小。实际的调用采用以下形式:

第一个电话

在第一次调用获取文档时,您可以给出大小(例如 5000 个文档)和滚动参数,指定搜索上下文超时后的时间(以分钟为单位)。

 POST /index/type/_search?scroll=1m
{
    "size": 5000,
    "query": {
        "match" : {
            "title" : "Something"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

第二次通话(以及所有其他后续通话)

在第一个调用的响应中,我们得到一个 _scroll_id ,可用于检索下一个文档块。

    POST /_search/scroll 
{
    "scroll" : "1m", 
    "scroll_id" : "XGSKJKSVNNNNNDDDD1233BBNMBBNNN===" 
}
Run Code Online (Sandbox Code Playgroud)

另外,检查这个答案

  • 我知道存在滚动 API,但我想在一个请求中返回 11000,而不使用滚动 API。该文档建议使用index.max_result_window作为解决方案,但它似乎不起作用。那么它应该影响什么?有没有其他方法可以在一次通话中获得超过 10k 的金额? (2认同)