DBAtlas · Atlas für Datenbankbetrieb

max_bytes_length_exceeded_exception: Document contains at least one immense term that is too long

Elasticsearch

Was bedeutet das?

In einem zu indizierenden Dokument hat ein Term (insbesondere ein Wert eines keyword-/nicht analysierten Felds) die maximal erlaubte Bytelänge (32766 Bytes) überschritten. Lucene kann einen so langen Term nicht indizieren.

Ursache

Ein sehr langer Textwert wird (als Ganzes) in ein keyword-Feld geschrieben; z. B. ein vollständiger Dokumentinhalt, base64-Daten oder eine lange URL/Kennung in einem keyword-Feld. Da keyword-Felder nicht analysiert werden, wird der Wert als einzelner Term indiziert und überschreitet das Limit.

Lösung

Verwende für langen Text ein text-Feld (analysiert); keyword ist nur für kurze Werte gedacht, die exakt übereinstimmen müssen. Um den Wert zu begrenzen, nutze ignore_above im Mapping (längere Werte werden nicht indiziert, aber weiterhin gespeichert). Werden sehr lange Felder nicht benötigt, setze sie auf index:false. Bewerte das Felddesign (text vs. keyword) anhand des Datentyps neu.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank