DBAtlas · Атлас эксплуатации баз данных

illegal_argument_exception_total_fields: Limit of total fields has been exceeded

Elasticsearch

Что это значит?

Общее число полей в маппинге индекса превысило допустимый верхний лимит (index.mapping.total_fields.limit, по умолчанию 1000). Индексирование завершается ошибкой, так как новые поля невозможно добавить.

Почему возникает?

Обычно это взрыв маппинга (mapping explosion): при включённом динамическом маппинге неструктурированные JSON-документы с переменными ключами (например, объекты, ключи которых берутся из пользовательских данных) добавляют каждое новое поле в маппинг. Со временем число полей быстро растёт и достигает лимита.

Как исправить

Чтобы устранить первопричину, моделируйте данные с переменными ключами полем flattened или как массив пар ключ-значение вместо объектов; ограничьте динамический маппинг (dynamic: false или strict). Если вам действительно нужно больше полей, осторожно повысьте лимит: PUT idx/_settings {"index.mapping.total_fields.limit": 2000}. Отслеживайте взрыв маппинга, проверяя число полей с помощью GET idx/_mapping.

Открыть в DBAtlas →

Ещё по этой СУБД