Elasti c исключение запроса агрегации поиска - PullRequest
0 голосов
/ 13 марта 2020

При запросе elasti c поискового агрегатного запроса я получаю сообщение «Попытка создать слишком много сегментов. Должно быть меньше или равно 10000, но найдено 10001».

Как мы можем обработать это исключение

1 Ответ

1 голос
/ 13 марта 2020

Как упомянуто в этой ссылке, предел по умолчанию search.max_buckets равен 10000.

Весь смысл такого ограничения состоит в том, чтобы предотвратить случайный запуск некоторых начинающих пользователей из-за длительных и ресурсоемких запросов агрегации, которые могут привести к проблемам с производительностью или, в худшем случае, к отказу узлов ES.

Однако, если вы хотите изменить эту настройку, есть два способа сделать это go.

Решение 1: Изменение вasticsearch.yml (требуется перезапуск узлов)

Вам необходимо от go до elasticsearch.yml всех узлов в вашем кластере и добавить приведенное ниже значение в ,

search.max_buckets = 10500

Сохраните файл и перезапустите узлы.

Решение 1: API кластера (перезапуск не требуется)

В качестве альтернативы, я полагаю Вы можете использовать API-интерфейс кластера и добавить настройки к persistent cluster settings следующим образом:

PUT /_cluster/settings
{
  "persistent": {
    "search.max_buckets": 12000
  }
}

Поскольку настройка кажется широкой для кластера, я бы порекомендовал Solution 2 за это.

Имея это в виду, поделитесь причинами того, почему вы хотите, чтобы контейнеры возвращали более 10 тысяч блоков. Также проведите тщательное тестирование, если вы измените настройки просто так, чтобы вы не начали видеть проблемы с производительностью в реальной среде, и если вы это сделаете, это первое, что вы хотели бы иметь в виду.

Позвольте Я знаю, если это поможет вам решить проблему.

...