Search settings

edit

The following expert settings can be set to manage global search and aggregation limits.

indices.query.bool.max_clause_count

(Static, integer) Maximum number of clauses a query can contain. Defaults to 4096.

This setting limits the total number of clauses that a query tree can have. The default of 4096 is quite high and should normally be sufficient. This limit applies to the rewritten query, so not only bool queries can contribute high numbers of clauses, but also all queries that rewrite to bool queries internally such as fuzzy queries. The limit is in place to prevent searches from becoming too large, and taking up too much CPU and memory. In case you’re considering increasing this setting, make sure you’ve exhausted all other options to avoid having to do this. Higher values can lead to performance degradations and memory issues, especially in clusters with a high load or few resources.

Elasticsearch offers some tools to avoid running into issues with regards to the maximum number of clauses such as the terms query, which allows querying many distinct values while still counting as a single clause, or the index_prefixes option of text fields, which allows executing prefix queries that expand to a high number of terms as a single term query.

search.max_buckets

(Dynamic, integer) Maximum number of aggregation buckets allowed in a single response. Defaults to 65,536.

Requests that attempt to return more than this limit will return an error.

indices.query.bool.max_nested_depth

(Static, integer) Maximum nested depth of bool queries. Defaults to 20.

This setting limits the nesting depth of bool queries. Deep nesting of boolean queries may lead to stack overflow.