DBAtlas · Veritabanı operasyon atlası

too_many_clauses: too_many_clauses: maxClauseCount is set to 1024 (query contains too many clauses)

Elasticsearch

Ne demek?

Bir sorgu, izin verilen maksimum Lucene clause sayısını aştı. ES 8.x'te bu sınır sabit değildir; düğümün heap boyutu ve search thread sayısına göre otomatik hesaplanır (küçük heap'li düğümlerde 1024'e kadar düşebilir) ve hata mesajında o anki değer yazar. Aşırı büyük bool sorguları ve çok sayıda terime genişleyen sorgular bunu tetikler.

Neden olur?

Programatik olarak üretilen, binlerce should/must maddesi içeren bool sorguları; çok sayıda terime genişleyen wildcard/prefix/fuzzy/query_string sorguları; derin iç içe bool yapıları. Not: terms sorgusu (tek alanda değer listesi) bu sınıra takılmaz; onun üst sınırı index.max_terms_count'tur (varsayılan 65.536).

Nasıl çözülür?

Sorguyu sadeleştirin: tek alandaki çok sayıda term maddesini tek bir terms sorgusuna (veya büyük listelerde terms lookup'a) dönüştürün. Wildcard/prefix yerine daha spesifik sorgu tipleri ya da index_prefixes/keyword alanları kullanın. ES 8.x'te indices.query.bool.max_clause_count ayarı deprecated'dır ve yok sayılır; sınırı yükseltmenin yolu düğüm heap'ini artırmaktır. Sorgu üretim mantığını gözden geçirin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar