too_many_clauses: too_many_clauses: maxClauseCount is set to 1024 (query contains too many clauses)
ElasticsearchO que significa?
Uma consulta excedeu o número máximo permitido de cláusulas Lucene. No ES 8.x esse limite não é fixo; ele é calculado automaticamente a partir do tamanho do heap do nó e do número de threads de busca (pode cair para 1024 em nós com heap pequeno), e a mensagem de erro mostra o valor atual. Consultas bool muito grandes e consultas que se expandem para muitos termos o disparam.
Por que acontece?
Consultas bool geradas programaticamente com milhares de cláusulas should/must; consultas wildcard/prefix/fuzzy/query_string que se expandem para muitos termos; estruturas bool profundamente aninhadas. Observação: a consulta terms (uma lista de valores em um único campo) não está sujeita a esse limite; seu teto é index.max_terms_count (padrão 65,536).
Como resolver
Simplifique a consulta: converta muitas cláusulas term em um único campo em uma consulta terms (ou um terms lookup para listas grandes). Use tipos de consulta mais específicos ou campos index_prefixes/keyword em vez de wildcard/prefix. No ES 8.x a configuração indices.query.bool.max_clause_count está obsoleta e é ignorada; a forma de elevar o limite é aumentar o heap do nó. Revise a lógica de geração das consultas.
Mais entradas deste banco
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping set to strict, dynamic introduction of [...] within [...] is not allowed
- illegal_argument_exception_fielddataillegal_argument_exception: Fielddata is disabled on text fields by default. Set fielddata=true on [your_field] in order to load fielddata in memory
- search_phase_execution_exceptionsearch_phase_execution_exception: all shards failed / Failed to execute phase [query]
- version_conflict_engine_exceptionversion_conflict_engine_exception: [_doc][id]: version conflict, current version [x] is different than the one provided [y] (HTTP 409)
- document_missing_exceptiondocument_missing_exception: [_doc][id]: document missing
- index_not_found_exceptionindex_not_found_exception: no such index [index_name] (HTTP 404)
- resource_already_exists_exceptionresource_already_exists_exception: index [index_name/uuid] already exists (HTTP 400)