too_many_clauses: too_many_clauses: maxClauseCount равен 1024 (в запросе слишком много условий)
ElasticsearchЧто это значит?
Запрос превысил максимально допустимое число предложений Lucene. В ES 8.x этот лимит не фиксирован; он рассчитывается автоматически исходя из размера heap узла и числа поисковых потоков (на узлах с малым heap может опускаться до 1024), а сообщение об ошибке показывает текущее значение. Его вызывают очень большие запросы bool и запросы, разворачивающиеся во множество терминов.
Почему возникает?
Программно сгенерированные запросы bool с тысячами предложений should/must; запросы wildcard/prefix/fuzzy/query_string, разворачивающиеся во множество терминов; глубоко вложенные структуры bool. Примечание: запрос terms (список значений по одному полю) не подпадает под этот лимит; для него ограничение — index.max_terms_count (по умолчанию 65,536).
Как исправить
Упростите запрос: преобразуйте множество предложений term по одному полю в один запрос terms (или terms lookup для больших списков). Используйте более специфичные типы запросов или поля index_prefixes/keyword вместо wildcard/prefix. В ES 8.x параметр indices.query.bool.max_clause_count устарел и игнорируется; повысить лимит можно, увеличив heap узла. Пересмотрите логику генерации запросов.
Ещё по этой СУБД
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping задан как strict, динамическое добавление [...] внутри [...] не допускается
- illegal_argument_exception_fielddataillegal_argument_exception: fielddata по умолчанию отключена для текстовых полей. Задайте fielddata=true для [your_field], чтобы загрузить fielddata в память
- search_phase_execution_exceptionsearch_phase_execution_exception: сбой на всех шардах / не удалось выполнить фазу [query]
- version_conflict_engine_exceptionversion_conflict_engine_exception: [_doc][id]: конфликт версий, текущая версия [x] отличается от указанной [y] (HTTP 409)
- document_missing_exceptiondocument_missing_exception: [_doc][id]: документ отсутствует
- index_not_found_exceptionindex_not_found_exception: индекс [index_name] не существует (HTTP 404)
- resource_already_exists_exceptionresource_already_exists_exception: индекс [index_name/uuid] уже существует (HTTP 400)