如何使elasticsearch一次返回超过10000个结果? ES似乎不遵守index.max_result_window设置

时间:2019-08-23 20:53:49

标签: elasticsearch

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

PUT indexname/_settings
{
      "index.max_result_window": 20000
}

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

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

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

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

我正在使用最新版本7.3.1。

1 个答案:

答案 0 :(得分:3)

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

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

第一次通话

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

 POST /index/type/_search?scroll=1m
{
    "size": 5000,
    "query": {
        "match" : {
            "title" : "Something"
        }
    }
}

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

在第一个呼叫的响应中,我们获得一个_scroll_id,该ID可用于检索下一个文档块。

    POST /_search/scroll 
{
    "scroll" : "1m", 
    "scroll_id" : "XGSKJKSVNNNNNDDDD1233BBNMBBNNN===" 
}

还请选中此answer