前言
Elasticsearch 預設的 Lucene BooleanQuery 的 clauses 長度限制為 1024, 不只有 bool
query, 其他的 query 也幾乎會在內部被轉換為 Lucene 的 BooleanQuery. 此限制主要是要避免 query 過大,造成使用過多 CPU 和 memory, 一般來說預設的 1024 就很夠用,但是如果出現 max_clause_count is set to 1024
這個錯誤訊息,代表 query 長度超過限制,可以透過以下的設定來做調整,不過要注意將此限制調高的話,可能會降低 performance 或是產生記憶體相關問題。
設定
若要調整 max_clause_count
,在 <ES_DIR>/config/elasticsearch.yml
中加上以下設定:
1 | indices.query.bool.max_clause_count: 10240 |
接著重啟 Elasticsearch 就可以了~