too_many_clauses: too_many_clauses: maxClauseCount is set to 1024 (query contains too many clauses) (demasiadas cláusulas en la consulta)
Elasticsearch¿Qué significa?
Una consulta superó el número máximo permitido de cláusulas de Lucene. En ES 8.x este límite no es fijo; se calcula automáticamente a partir del tamaño del heap del nodo y del número de hilos de búsqueda (puede bajar a 1024 en nodos con heap pequeño), y el mensaje de error muestra el valor actual. Lo provocan las consultas bool muy grandes y las consultas que se expanden a muchos términos.
¿Por qué ocurre?
Consultas bool generadas por programa con miles de cláusulas should/must; consultas wildcard/prefix/fuzzy/query_string que se expanden a muchos términos; estructuras bool profundamente anidadas. Nota: la consulta terms (una lista de valores sobre un solo campo) no está sujeta a este límite; su tope es index.max_terms_count (por defecto 65,536).
Cómo solucionarlo
Simplifique la consulta: convierta muchas cláusulas term sobre un solo campo en una sola consulta terms (o un terms lookup para listas grandes). Use tipos de consulta más específicos o campos index_prefixes/keyword en lugar de wildcard/prefix. En ES 8.x el parámetro indices.query.bool.max_clause_count está obsoleto y se ignora; la forma de elevar el límite es aumentar el heap del nodo. Revise la lógica de generación de consultas.
Más entradas de este motor
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping set to strict, dynamic introduction of [...] within [...] is not allowed (mapping strict: no se permite añadir campos dinámicamente)
- 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 (fielddata deshabilitado en campos text)
- search_phase_execution_exceptionsearch_phase_execution_exception: all shards failed / Failed to execute phase [query] (fallaron todos los shards en la fase de búsqueda)
- version_conflict_engine_exceptionversion_conflict_engine_exception: [_doc][id]: version conflict, current version [x] is different than the one provided [y] (HTTP 409) (conflicto de versión del documento)
- document_missing_exceptiondocument_missing_exception: [_doc][id]: document missing (documento inexistente)
- index_not_found_exceptionindex_not_found_exception: no such index [index_name] (HTTP 404) (el índice no existe)
- resource_already_exists_exceptionresource_already_exists_exception: index [index_name/uuid] already exists (HTTP 400) (el índice ya existe)