Запрос на слишком много контекстов прокрутки

Мы используем ES версии 6.4 и хотим обновиться до 7.4. При тестировании перехода на поиск с разбивкой на страницы с помощью Scroll мы столкнулись со следующей проблемой:

Попытка создать слишком много контекстов прокрутки. Должно быть меньше или равно [500]. Это ограничение можно установить, изменив параметр [search.max_open_scroll_context].

Похоже, мы можем открыть только 500 контекстов прокрутки.

Когда мы запускаем прокрутку, создается контекст прокрутки (контекст A), а идентификатор прокрутки указывает на контекст (контекст A). Когда я получаю следующий пакет, создается новый контекст прокрутки (контекст B). Я получаю тот же идентификатор прокрутки (теперь он указывает на контекст B). Что происходит со старым контекстом прокрутки (контекст A). Будет ли он немедленно закрыт и произведен сборщик мусора? Или произойдет только по истечении времени прокрутки? Как я могу очистить старый контекст прокрутки? Идентификатор прокрутки, связанный со старым контекстом (контекст A), теперь указывает на новый (контекст B).

Как мы можем обойти эту проблему?

Наши варианты:

  1. Мы можем увеличить контекст прокрутки в настройках. Возникнут ли проблемы, если мы увеличим контексты прокрутки до большего числа (Пример: 10000)
  2. Очистите контексты прокрутки, когда они будут использованы. Мы наблюдали, как тот же идентификатор прокрутки возвращается для получения последующих пакетов. Как очистить контекст прокрутки, созданный для более старого пакета?

person user3355101    schedule 25.11.2020    source источник


Ответы (1)


Возможно, лучше использовать Search after вместо Scroll API, поскольку Scroll API больше не рекомендуется ES для глубокой разбивки на страницы (ES 7.x). дополнительную информацию можно найти на странице документации ElasticSearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.x/scroll-api.html

person Kaveh    schedule 25.11.2020
comment
Спасибо @Kaveh, нам нужно будет изучить - person user3355101; 27.11.2020