天天看點

Elasticsearch 使用scroll時出現異常 Trying to create more than 500 scroll contexts will not be allowed

簡述

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);           

繼續閱讀