go 查詢es報錯:
一、問題描述:
elasticsearch 分頁查詢數據,剛開始數據還可以正常顯示,但是到后面就報錯:
panic: elastic: Error 400 (Bad Request): all shards failed [type=search_phase_execution_exception]
二、原因分析:
搜索了下,有什么 ElasticSearch排序引起的all shards failed異常原因分析? 解決方案
還有就是跟我這個問題一樣的,不是因排序引起all shards failed異常,知道了:ES是默認返回1萬條數據的。那我遇到的問題就是數據量太大了,超出了ES的最大限制。
三、解決方案:
Elasticsearch設置最大返回條數:
在Elasticsearch中如果需要做分頁查詢,我們通常使用form和size實現。form指定從有序哪一行開始,size表示從當前開始讀取多少行。但是我們發現查詢結果最大只能到10000,這是因為Elasticsearch中的size的默認值在index.max_result_window 中設置,並且默認值就是10000。下面我們通過Elasticsearch的API設置最大的讀取行。
注:Elasticsearch支持的最大值是2^31-1,也就是2147483647。
put /api.yungehuo.com*/_settings { "index":{ "max_result_window":2147483647 } }