Как разрешить попытку создать слишком много контекстов прокрутки. Должно быть меньше или равно: [500]?

#node.js #elasticsearch

#node.js #elasticsearch

Вопрос:

Я пытаюсь выполнить запрос из Elastic DB. Итак, для 90000 записей мне нужно попасть в elastic DB в двух разных случаях.Мой запрос заключается в следующем.

     var queryobj = {

    "query": {

        "bool": {

            "must": [

                {

                    "match": {

                        "mobile": value

                    }
                }

            ],

        }
    }

};
var { _scroll_id, hits, took } = await elasticClient.search({
    index: 'mobiledata',     
    type: '_doc',
    scroll: '20m',
    filterPath: '_scroll_id,hits.hits._source,took',
    size: 10000,
    body: queryobj
});

if (hits) {
    console.log("hits ", hits);
    return hits.hits;
}
return hits;
  

При попытке выполнить это, я получаю ошибку типа :

  { Error: [exception] Trying to create too many scroll contexts. Must be less than or equal to: 
 [500]. This limit can be set by changing the [search.max_open_scroll_context] setting.
 status: 500,
 displayName: 'InternalServerError',
 message: '[exception] Trying to create too many scroll contexts. Must be less than or equal to: 
 [500]. This limit can be set by changing the [search.max_open_scroll_context] setting.',
  

Кто-нибудь может мне помочь, как исправить эту ошибку?

Комментарии:

1. Почему вы устанавливаете 20-миллиметровый тайм-аут прокрутки? уверен, что 5m более чем достаточно. Кроме того, в нынешнем виде вы, вероятно, перебираете не все результаты. Наконец, вы должны уничтожить контекст прокрутки, когда закончите с запросом.

2. Я обновился как 5m. Не могли бы вы, пожалуйста, объяснить, как уничтожить контекст прокрутки?

3. Я говорю об этом

Ответ №1:

 await elasticClient.clearScroll({scroll_id: _scroll_id});
  

Всякий раз, когда вы хотите закрыть scroll api и открыть другой scroll API, пожалуйста, запустите приведенный выше код.
У меня это работает нормально.