Что значит «Предел полных полей [1000] в index [] превышен» означает в Elasticsearch - PullRequest
0 голосов
/ 27 марта 2019

У меня создан индекс Elasticsearch, который содержит около 350 полей (включая вложенные поля), я определил отображение только для немногих из них.При вызове API _update я получаю исключение с ошибкой 400.

Превышен лимит полных полей [1000] в индексе [test_index]
Я хочу понять точноепричина этого исключения, поскольку мое число полей и полей, для которых определено сопоставление, меньше 1000.
Примечание: У меня есть вложенные поля и динамическое отображение включено.

С уважением,
Sandeep

1 Ответ

2 голосов
/ 27 марта 2019

Вы можете решить проблему, увеличив значение index.mapping.total_fields.limit (по умолчанию 1000)

index.mapping.total_fields.limit

Максимальное количество полей в индексе. Отображение полей и объектов, а также псевдонимы полей учитываются в этом пределе. Значение по умолчанию - 1000.

Чтобы увеличить общее количество полей до 2000, попробуйте это

PUT test_index/_settings
{
  "index.mapping.total_fields.limit": 2000
}

Причина ограничения количества полей:

Определение слишком большого количества полей в индексе - это условие, которое может привести к взрыву отображения, который может привести к ошибкам нехватки памяти и трудным ситуациям для восстановления. Это довольно часто встречается в динамических отображениях. Каждый раз, когда документ содержит новые поля, они заканчиваются в сопоставлениях индекса

Связанные ресурсы:
1. Получить количество полей в индексе
2. Настройки для предотвращения взрыва отображений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...