illegal_argument_exception_fielddata: illegal_argument_exception: fielddata по умолчанию отключена для текстовых полей. Задайте fielddata=true для [your_field], чтобы загрузить fielddata в память
ElasticsearchЧто это значит?
Предпринята попытка агрегации, сортировки или скрипта по анализируемому текстовому полю. Для текстовых полей эти операции по умолчанию отключены, поскольку требуют затратной по памяти fielddata.
Почему возникает?
Агрегация/сортировка применена непосредственно к текстовому полю. В Elasticsearch text используется для полнотекстового поиска, а keyword — для агрегации/сортировки по точным значениям; их смешение приводит к этой ошибке.
Как исправить
Для агрегации/сортировки используйте подполе keyword (например, "my_field.keyword"). Если поле только текстовое, добавьте в mapping подполе keyword (multi-field) и выполните _reindex. Включение fielddata для текстового поля (fielddata=true) возможно, но не рекомендуется из-за большого потребления памяти и риска срабатывания circuit breaker; используйте его только при крайней необходимости.
Ещё по этой СУБД
- circuit_breaking_exceptionCircuitBreakingException[[parent]]: данные слишком велики, данные для [<...>] составили бы [...], что превышает лимит [...]
- mapper_parsing_exceptionmapper_parsing_exception: не удалось разобрать поле [...] типа [...]
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping задан как strict, динамическое добавление [...] внутри [...] не допускается
- search_phase_execution_exceptionsearch_phase_execution_exception: сбой на всех шардах / не удалось выполнить фазу [query]
- too_many_clausestoo_many_clauses: maxClauseCount равен 1024 (в запросе слишком много условий)
- version_conflict_engine_exceptionversion_conflict_engine_exception: [_doc][id]: конфликт версий, текущая версия [x] отличается от указанной [y] (HTTP 409)
- document_missing_exceptiondocument_missing_exception: [_doc][id]: документ отсутствует