#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, пожалуйста, запустите приведенный выше код.
У меня это работает нормально.