加载中

搜索设置

可以设置以下专家设置来管理全局搜索和聚合限制。

indices.query.bool.max_clause_count
在 8.0.0 中已弃用

此已弃用的设置无效。

(Static, integer) Elasticsearch 现在将使用基于搜索线程池大小和分配给 JVM 的堆大小的启发式方法,动态设置查询中允许的最大子句数。此限制的最小值为 1024,并且在大多数情况下会更大(例如,具有 30GB RAM 和 48 个 CPU 的节点的最大子句数约为 27,000)。更大的堆会导致更高的值,而更大的线程池会导致更低的值。

尽可能避免使用包含大量子句的查询。如果您之前为了适应繁重的查询而调高了此设置,则可能需要增加 Elasticsearch 可用的内存量,或者减小搜索线程池的大小,以便为每个并发搜索提供更多内存。

在早期版本的 Lucene 中,您可以通过将布尔查询相互嵌套来绕过此限制,但现在的限制是基于整个查询中的叶子查询总数,这种变通方法将不再起作用。

search.max_buckets

(Dynamic, integer) 单个响应中允许的最大聚合桶数。默认为 65,536。

尝试返回超过此限制的数据的请求将返回错误。

search.aggs.only_allowed_metric_scripts

(Dynamic, boolean) 配置是否只能在脚本化指标聚合中使用显式允许的脚本。默认为 false

使用未包含在 search.aggs.allowed_inline_metric_scriptssearch.aggs.allowed_stored_metric_scripts 中的脚本的请求将返回错误。

search.aggs.allowed_inline_metric_scripts

(Dynamic, list of strings) 当 search.aggs.only_allowed_metric_scripts 设置为 true 时,可用于脚本化指标聚合的内联脚本列表。默认为空列表。

使用其他内联脚本的请求将返回错误。

search.aggs.allowed_stored_metric_scripts

(Dynamic, list of strings) 当 search.aggs.only_allowed_metric_scripts 设置为 true 时,可用于脚本化指标聚合的已存储脚本的 ID 列表。默认为空列表。

使用其他已存储脚本的请求将返回错误。

indices.query.bool.max_nested_depth

(Static, integer) 查询的最大嵌套深度。默认为 30

此设置限制查询的嵌套深度。过深的查询嵌套可能会导致栈溢出错误。

支持以下搜索设置

  • search.aggs.rewrite_to_filter_by_filter

搜索任务看门狗(watchdog)监视长时间运行的搜索任务,并在超出阈值时记录热线程。这通过在搜索仍在运行时捕获线程活动来帮助诊断慢搜索,而不仅仅是在完成后记录日志。

数据节点上,当分片级搜索操作(查询/获取阶段)超过数据节点阈值时,看门狗会记录热线程。在协调节点上,它仅在长时间运行的协调搜索任务没有未完成的分片子请求时才记录热线程。这避免了当协调节点单纯在等待慢分片时产生冗余日志,因为慢分片会记录其自身的热线程。

热线程输出经过 gzip 压缩和 base64 编码。要对其进行解码,请使用

echo "<base64-data>" | base64 --decode | gzip --decompress
		

如果输出跨越多个日志行,请先将它们连接起来。

search.task_watchdog.enabled
(Dynamic, boolean) 启用或禁用搜索任务看门狗。默认为 false

search.task_watchdog.coordinator_threshold
(Dynamic, 时间值) 协调任务的阈值。当协调节点上的搜索任务超过此持续时间且没有未完成的分片子请求时,将记录热线程。设置为 -1ms 可禁用协调任务监视。默认为 3s

search.task_watchdog.data_node_threshold
(Dynamic, 时间值) 数据节点分片任务的阈值。当分片级搜索操作(查询或获取阶段)超过此持续时间时,将记录热线程。设置为 -1ms 可禁用数据节点任务监视。默认为 3s

search.task_watchdog.interval
(Dynamic, 时间值) 看门狗检查慢任务的频率。较小的值能更快地检测到慢任务,但会消耗更多资源。最小值为 100ms。默认为 1s

search.task_watchdog.cooldown_period

(Dynamic, 时间值) 此节点上记录热线程之间的最小时间间隔。这可以防止当许多任务同时变慢时日志被大量刷屏。默认为 30s

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.