目录
机器学习设置
使用机器学习不需要配置任何设置。默认情况下启用。机器学习使用SSE4.2指令,因此它只在CPU支持SSE4.2的机器上工作。如果在旧硬件上运行Elasticsearch,则必须禁用机器学习(通过将xpack.ml.enabled设置为false)。
通用的机器学习设置
node.roles: [ ml ]
将node.roles设置为包含 ml 以将节点标识为机器学习节点。如果要运行机器学习作业,则群集中必须至少有一个机器学习节点。
如果设置node.roles,则必须显式指定节点所需的所有角色。
在专用协调节点或专用主节点上,不要设置ml角色。
强烈建议专用机器学习节点也具有
remote_cluster_client角色;否则,当用于机器学习作业或数据源时,跨集群搜索将失败。
xpack.ml.enabled
设置为true(默认)以在节点上启用机器学习API。
如果设置为false,则在节点上禁用机器学习api。因此,节点无法打开作业、启动数据源或接收与机器学习API相关的传输(内部)通信请求。如果该节点是协调节点,则来自客户端(包括Kibana)的机器学习请求也会失败。有关在特定Kibana实例中禁用机器学习的更多信息,请参阅Kibana机器学习设置。
如果要在集群中使用机器学习功能,建议在所有节点上将xpack.ml.enabled设置为true。这是默认行为。至少,必须在所有符合主资格的节点上启用该节点。如果我们想在客户机或Kibana中使用机器学习功能,则必须在所有协调节点上启用该功能。
xpack.ml.inference_model.cache_size
允许的最大推断缓存大小。推断缓存存在于每个摄取节点上的JVM堆中。缓存为推理处理器提供了更快的处理时间。该值可以是静态字节大小的值(即“2gb”)或总分配堆的百分比。默认值为“40%”。
xpack.ml.inference_model.time_to_live
推理模型缓存中模型的生存时间(TTL)。TTL是根据上次访问计算的。推理处理器尝试从缓存加载模型。如果推理处理器在TTL期间没有收到任何文档,那么引用的模型将被标记为从缓存中逐出。如果稍后处理文档,则模型将再次加载到缓存中。默认为5m
xpack.ml.max_inference_processors
允许跨所有摄取管道的推断类型处理器的总数。一旦达到限制,就不允许向管道添加推理处理器。默认为50。
xpack.ml.max_machine_memory_percent
机器学习可用于运行分析进程的机器内存的最大百分比(这些进程与Elasticsearch JVM是分开的。)默认值为30%。限制基于机器的总内存,而不是当前可用内存。如果这样做会导致机器学习作业的估计内存使用超过限制,则不会将作业分配给节点。启用操作员权限功能后,此设置只能由操作员用户更新。
xpack.ml.max_model_memory_limit
可以为此节点上的任何作业设置的
model_memory_limit属性值。如果试图创建一个
model_memory_limit 属性值大于此设置值的作业,则会发生错误。更新此设置时,现有作业不受影响。有关
model_memory_limit属性的详细信息,请参阅“analysis_limits”。
xpack.ml.max_open_jobs
一个节点上可以同时运行的最大作业数。默认为20。在此上下文中,作业包括异常检测作业和数据帧分析作业。最大作业数也受内存使用量的限制。因此,如果作业的估计内存使用率高于允许值,则在节点上运行的作业将更少。在版本7.1之前,此设置是每个节点的非动态设置。在7.1版中,它成为了集群范围的动态设置。因此,只有在集群中的每个节点都运行7.1或更高版本之后,才会使用在节点启动后对其值所做的更改。最大允许值为512。
xpack.ml.node_concurrent_job_allocations
业将更少。在版本每个节点上可以同时处于打开状态的最大作业数。通常,作业在移动到打开状态之前会在这种状态下花费少量时间。必须在打开时恢复大型模型的作业在打开状态下花费更多时间。启用操作员权限功能后,此设置只能由操作员用户更新。默认为2。
高级机器学习设置
这些设置用于高级用例;默认值通常足够:
xpack.ml.enable_config_migration
启用操作员权限功能后,此设置只能由操作员用户更新。
xpack.ml.max_anomaly_records
每个存储桶输出的最大记录数。默认值为500。
xpack.ml.max_lazy_ml_nodes
延迟启动的机器学习节点数。在第一个机器学习作业打开之前不需要机器学习节点的情况下非常有用。它默认为0,最大可接受值为3。如果机器学习节点的当前数量大于或等于此设置,则假定没有更多的延迟节点可用,因为已经设置了所需数量的节点。如果作业已打开,且此设置的值大于零,并且没有可以接受该作业的节点,则该作业将保持打开状态,直到将新的机器学习节点添加到集群中,并将该作业分配给在该节点上运行。启用操作员权限功能后,此设置只能由操作员用户更新。
此设置假定某些外部进程能够将机器学习节点添加到集群中。此设置仅在与此类外部进程结合使用时才有用。
xpack.ml.max_ml_node_size
支持自动群集扩展的部署中机器学习节点的最大节点大小。默认为0b,这意味着该值被忽略。如果将其设置为未来机器学习节点的最大可能大小,则当将机器学习作业分配给懒惰节点时,当缩放无法支持作业的大小时,它可以检查(并很快失败)。启用操作员权限功能后,此设置只能由操作员用户更新。
xpack.ml.persist_results_max_retries
处理机器学习结果时重试失败的批量索引请求的最大次数。如果达到限制,机器学习作业将停止处理数据,其状态为失败。启用操作员权限功能后,此设置只能由操作员用户更新。默认为20。此设置的最大值为50。
xpack.ml.process_connect_timeout
与Elasticsearch JVM分开运行的机器学习进程的连接超时。默认为10秒。一些机器学习处理是由单独运行到Elasticsearch JVM的进程完成的。当这些进程启动时,它们必须连接到Elasticsearch JVM。如果这样的进程没有在此设置指定的时间段内连接,则假定该进程已失败。启用操作员权限功能后,此设置只能由操作员用户更新。默认为10秒。此设置的最小值为5s。
xpack.ml.use_auto_machine_memory_percent
如果此设置为true,则忽略xpack.ml.max_machine_memory_percent设置。相反,可以用于运行机器学习分析过程的机器内存的最大百分比是自动计算的,并考虑到总节点大小和节点上JVM的大小。默认值为false。如果此设置在节点之间不同,则会注意当前主节点上的值。启用操作员权限功能后,此设置只能由操作员用户更新。
如果没有专用的机器学习节点(也就是说,该节点具有多个角色),请不要启用此设置。它的计算假设机器学习分析是节点的主要目的。
该计算假设专用机器学习节点在JVM之外至少保留了256MB内存。如果集群中有小型机器学习节点,则不应使用此设置。
机器学习断路器设置
breaker.model_inference.limit
对模型推理中断器的限制,默认为JVM堆的50%。如果父断路器小于JVM堆的50%,则它将绑定到该限制。
breaker.model_inference.overhead
所有会计估计数相乘以确定最终估计数的常数。默认为1。
breaker.model_inference.type
断路器的基本类型。有两个有效选项:noop和memory。noop意味着断路器不会阻止过多的内存使用。内存意味着断路器跟踪推理模型所使用的内存,并可能中断和防止OutOfMemory错误。默认值是内存。
查询(Search) 设置
可以设置以下专家设置来管理全局搜索和聚合限制。
indices.query.bool.max_clause_count
Lucene BooleanQuery可以包含的最大子句数。默认为1024。
此设置限制Lucene BooleanQuery可以拥有的子句数。默认值1024相当高,通常应该足够了。这个限制不仅影响Elasticsearchs bool查询,而且许多其他查询在内部被重写为Lucene的BooleanQuery。这个限制是为了防止搜索变得太大,占用太多的CPU和内存。如果我们正在考虑增加此设置,请确保已用尽所有其他选项,以避免必须这样做。更高的值会导致性能下降和内存问题,特别是在负载高或资源少的集群中。
search.max_buckets
单个响应中允许的最大聚合桶数。默认为65535。
尝试返回超过此限制的请求将返回错误。
indices.query.bool.max_nested_depth
布尔查询的最大嵌套深度。默认为20。
此设置限制bool查询的嵌套深度。布尔查询的深度嵌套可能导致堆栈溢出。