DBAtlas · Atlas für Datenbankbetrieb

too_many_clauses: too_many_clauses: maxClauseCount is set to 1024 (query contains too many clauses) (zu viele Klauseln in der Abfrage)

Elasticsearch

Was 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.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank