too_many_clauses: too_many_clauses: maxClauseCount is set to 1024 (query contains too many clauses) (zu viele Klauseln in der Abfrage)
ElasticsearchWas bedeutet das?
Eine Abfrage hat die maximal erlaubte Anzahl von Lucene-Klauseln überschritten. In ES 8.x ist dieses Limit nicht fest; es wird automatisch aus Heap-Größe und Anzahl der Such-Threads des Knotens berechnet (auf Knoten mit kleinem Heap kann es auf 1024 sinken), und die Fehlermeldung zeigt den aktuellen Wert. Sehr große bool-Abfragen und Abfragen, die auf viele Terme expandieren, lösen es aus.
Ursache
Programmatisch erzeugte bool-Abfragen mit Tausenden should/must-Klauseln; wildcard-/prefix-/fuzzy-/query_string-Abfragen, die auf viele Terme expandieren; tief verschachtelte bool-Strukturen. Hinweis: Die terms-Abfrage (eine Werteliste auf einem einzelnen Feld) unterliegt diesem Limit nicht; ihre Obergrenze ist index.max_terms_count (Standard 65.536).
Lösung
Vereinfache die Abfrage: Wandle viele term-Klauseln auf einem einzelnen Feld in eine terms-Abfrage um (oder einen terms lookup bei großen Listen). Verwende spezifischere Abfragetypen oder index_prefixes/keyword-Felder statt wildcard/prefix. In ES 8.x ist die Einstellung indices.query.bool.max_clause_count veraltet und wird ignoriert; das Limit hebst du an, indem du den Heap des Knotens vergrößerst. Überprüfe die Logik zur Abfrageerzeugung.
Weitere Einträge zu dieser Datenbank
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping set to strict, dynamic introduction of [...] within [...] is not allowed (striktes Mapping; neues Feld nicht erlaubt)
- 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 auf text-Feldern standardmäßig deaktiviert)
- search_phase_execution_exceptionsearch_phase_execution_exception: all shards failed / Failed to execute phase [query] (Suche auf allen Shards fehlgeschlagen)
- version_conflict_engine_exceptionversion_conflict_engine_exception: [_doc][id]: version conflict, current version [x] is different than the one provided [y] (HTTP 409) (Versionskonflikt)
- document_missing_exceptiondocument_missing_exception: [_doc][id]: document missing (Dokument fehlt)
- index_not_found_exceptionindex_not_found_exception: no such index [index_name] (HTTP 404) (Index nicht gefunden)
- resource_already_exists_exceptionresource_already_exists_exception: index [index_name/uuid] already exists (HTTP 400) (Index existiert bereits)