簡述
Trying to create more than 500 scroll contexts will not be allowed in the next major version by default
You can change the [search.max_open_scroll_context] setting to use a greater default value or lower the number of scrolls that you need to run in parallel."
問題原因
Elasticsearch 使用scroll時,中設定的timeout時間内,累計生成的scroll_id數超過了最大限制
問題解決方式
- 減小timeout設定
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.size(5000);
SearchRequest searchRequest = new SearchRequest();
searchRequest.source(searchSourceBuilder);
TimeValue timeValue = new TimeValue(3000);
searchRequest.scroll(timeValue);
searchRequest.indices("");
- 清理scroll
ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
clearScrollRequest.addScrollId(scrollId);// 也可以選擇setScrollIds()将多個scrollId一起使用
ClearScrollResponse clearScrollResponse = null;
try {
clearScrollResponse = produceRestClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
boolean succeeded = clearScrollResponse.isSucceeded();
log.info("--------------->>>>{}-----", succeeded);