Skip to main content
search
Error Logs

Error log: “too_many_clauses: max_clause_count is set to 1024”

By November 21, 2025No Comments

Error log: This is a root_cause in a search query error response, typically when using a terms query with a very large array.

JSON

None
{

  "error": {

    "root_cause": [

      {

        "type": "illegal_state_exception",

        "reason": "Failed to execute phase [query]",

        "caused_by": {

          "type": "too_many_clauses",

          "reason": "max_clause_count is set to 1024"

        }

      }

    ],

    "type": "search_phase_execution_exception",

    // ...

  },

  "status": 500

}

Why… is this happening? This is a safety limit inside Lucene (the engine that powers OpenSearch). When you run certain queries, like a terms query (e.g., “find all documents where user_id is one of [1, 2, 3, … 5000]”), Lucene expands this into a “Boolean query” (e.g., user_id=1 OR user_id=2 OR ...).

To prevent a single query with millions of OR clauses from consuming all CPU and memory, Lucene has a hard limit on the maximum number of clauses allowed in a single Boolean query. By default, that limit is 1024.

Your query (likely a terms query with more than 1024 items) has exceeded this limit.

Best practice:

1. Reduce the number of terms: The best fix is to change your application logic. Can you break the query into several smaller requests? (e.g., 5 requests of 1000 terms each).

2. Use the terms_lookup feature: If your list of terms is in another index, you can use a terms_lookup. This tells OpenSearch to fetch the terms from a document instead of you sending them all.

3. Increase the limit (not recommended): You can increase this limit, but do so with extreme caution. This can easily lead to slow queries and cluster instability. If you must, you can change it per-index:
JSON

None

PUT /my-index/_settings

{

  "index.query.bool.max_clause_count": 2048

}

4. Changing this dynamically for the whole cluster is deprecated and not advised.

What else can I do? Trying to figure out the best way to query against a large list of IDs? This is a common design question. Ask the OpenSearch community for patterns like terms_lookup or _msearch. For direct help, contact us in The OpenSearch Slack Channel in #General.

Author