我最近将 Elasticsearch 从版本 7.5.1 升级到 8.0.1,我遇到了需要大约 20k 布尔子句的查询问题。在 Elasticsearch 7 中,我手动更新了持久设置以增加 max_bool_clause_count 值以实现此目的。但是,我注意到在版本 8.0.1 中, max_bool_clause_count 设置已被弃用。
我尝试更新 max_clause_count,但它没有反映为已弃用。是否有推荐的方法可以在 Elasticsearch 8.0.1 中实现相同的结果而不依赖于已弃用的设置?我可以使用任何其他方法配置此限制,或者是否有其他方法来处理大型布尔查询?
官方文档指出:
Elasticsearch 现在将根据搜索线程池的大小和分配给 JVM 的堆大小使用启发式动态设置查询中允许的最大子句数。此限制的最小值为 1024,并且在大多数情况下会更大(例如,具有 30Gb RAM 和 48 个 CPU 的节点的最大子句计数约为 27,000)。较大的堆会导致较高的值,较大的线程池会导致较低的值。
所以看来你没有办法通过设置来做你想做的事情。