Result window is too large, from + size must be less than or equal to: [10000] but was [*]

Elasticsearch 使用 from + size 分页查询数据时出现异常如下

{
    "error": {
        "root_cause": [{
            "type": "query_phase_execution_exception",
            "reason": "Result window is too large, from + size must be less than or equal to: [10000] but was [307440]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."
        }],
        "type": "search_phase_execution_exception",
        "reason": "all shards failed",
        "phase": "query",
        "grouped": true,
        "failed_shards": [{
            "shard": 0,
            "index": "",
            "node": "",
            "reason": {
                "type": "query_phase_execution_exception",
                "reason": "Result window is too large, from + size must be less than or equal to: [10000] but was [307440]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting."
            }
        }]
    },
    "status": 500
}

解决办法在异常信息里已经说明清楚了,需要调整索引的配置项index.max_result_window,调整到数值为需要的大小

PUT index_name/_settings
{
  "index.max_result_window":10000000
}

注:from + size 浅分页只适合少量数据, 因为随着 from 增大,查询的时间就会越大;而且数据越大,查询的效率指数下降。正常搜索返回前1千条匹配率高的记录完全能满足业务了,所以可以固定一个最大的页数。

你可能感兴趣的:(Result window is too large, from + size must be less than or equal to: [10000] but was [*])