too_many_clauses: too_many_clauses: maxClauseCount is set to 1024 (query contains too many clauses)
ElasticsearchNe 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.
Aynı motorda diğer kayıtlar
- strict_dynamic_mapping_exceptionstrict_dynamic_mapping_exception: mapping set to strict, dynamic introduction of [...] within [...] is not allowed
- 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
- search_phase_execution_exceptionsearch_phase_execution_exception: all shards failed / Failed to execute phase [query]
- version_conflict_engine_exceptionversion_conflict_engine_exception: [_doc][id]: version conflict, current version [x] is different than the one provided [y] (HTTP 409)
- document_missing_exceptiondocument_missing_exception: [_doc][id]: document missing
- index_not_found_exceptionindex_not_found_exception: no such index [index_name] (HTTP 404)
- resource_already_exists_exceptionresource_already_exists_exception: index [index_name/uuid] already exists (HTTP 400)