ES 生产中10个常见参数阈值(默认最大值)操作及优化解决方案

简介: ES 生产中10个常见参数阈值(默认最大值)操作及优化解决方案

1、单个索引的字段数量上限

参数:index.mapping.total_fields.limit

阈值:1000

解释:索引中的最大字段数。字段和对象映射以及字段别名计入此限制。默认值为1000。

此限制是为了防止映射和搜索变得过大。较高的值会导致性能下降和内存问题,尤其是在负载高或资源少的集群中。


2、映射字段最大嵌套深度


参数:index.mapping.depth.limit

阈值:20

解释:场的最大深度,以内部对象的数量来衡量。例如,如果所有字段都在根对象级别定义,则深度为1. 如果有一个对象映射,则深度为 2等。默认为20。


3、字段名称最大长度

参数:index.mapping.field_name_length.limit

阈值:无限制

解释:设置字段名称的最大长度。此设置并不是真正解决映射爆炸的问题,但如果需要限制字段长度,它可能仍然有用。通常不需要设置此设置。除非用户开始添加大量名称很长的字段,否则默认值是可以的。默认为 Long.MAX_VALUE(无限制)。


4、分页查询最大文档查询数量

参数:index.max_result_window

阈值:10000

解释:max_result_window是查询的最大数值,默认值为10000。也就是当 from + size 大于10000的时候,就会出现问题,如下图报错信息所示:

9af8a9b7fe3d461da08e2a82e94f1c86.png

max_result_window本身是对JVM的一种保护机制,通过设定一个合理的阈值,避免初学者分页查询时由于单页数据过大而导致OOM。


在很多业务场景中经常需要查询10000条以后的数据,当遇到不能查询10000条以后的数据的问题之后,网上的很多答案会告诉你可以通过放开这个参数的限制,将其配置为100万,甚至1000万就行。但是如果仅仅放开这个参数就行,那么这个参数限制的意义有何在呢?如果你不知道这个参数的意义,很可能导致的后果就是频繁的发生OOM而且很难找到原因,设置一个合理的大小是需要通过你的各项指标参数来衡量确定的,比如你用户量、数据量、物理内存的大小、分片的数量等等。通过监控数据和分析各项指标从而确定一个最佳值,并非越大约好。


5、文档查询的最大召回数量

参数:track_total_hits

阈值:10000

解释:匹配查询准确计数的命中数。默认为10000

如果设置为 track_total_hits: true ,则以牺牲一些性能为代价返回准确的命中数。回参hits里面的total才是真实业务的总条数,不然的话Elasticsearch 限制了最多的数值为10000(10000以内没问题,超出10000就看不出来了)如果false,则响应不包括与查询匹配的总命中数。


6、组合查询(bool query)最大字句限制

参数:indices.query.bool.max_clause_count

阈值:1024

解释:匹配查询准确计数的命中数。默认为10000

此设置限制 Lucene Boolean Query 可以拥有的子句数量。默认值 1024 相当高,通常应该足够了。此限制不仅影响 Elasticsearch bool查询,而且许多其他查询在内部被重写为 Lucene 的 BooleanQuery。该限制是为了防止搜索变得过大并占用过多的 CPU 和内存。除非用尽办法已无其他优化手段而不得不这样做,否则不要增加这个值。较高的值会导致性能急剧下降和内存问题,尤其是在负载高或资源少的集群中。


7、聚合查询最大分桶数量

参数:search.max_buckets

阈值:65,536

解释:尝试返回超过此限制的请求将返回错误。


8、单次查询最大词项数量

参数:max_query_terms

阈值:25

解释:最大查询词数,默认为 25。增加此值会以牺牲查询执行速度为代价提供更高的准确性。


9、单个分片最大文档数量上限(shard max doc count)

阈值:2^31-1 或者 2147483647


10、单个文档最大容量上限

参数:http.max_content_length

阈值

  • ES阈值:100MB
  • Lucene阈值:2GB


解释:大文档对网络、内存使用和磁盘造成很大压力,即便查询的时候不请求源数据"_source"也是一样。因为 Elasticsearch 在所有情况下都需要获取文档的 _id。对该文档进行索引可能会占用文档原始大小的倍数的内存量。邻近搜索(例如短语查询)和突出显示也变得更加昂贵,因为它们的成本直接取决于原始文档的大小

相关文章
|
4月前
|
自然语言处理
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
113 1
|
2月前
|
运维 Java Serverless
函数计算产品使用问题之事件函数单实例的并发度默认是多少
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
110 6
函数计算产品使用问题之事件函数单实例的并发度默认是多少
|
2月前
|
运维 JavaScript Serverless
函数计算产品使用问题之单实例的并发度默认最大值是多少
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
域名解析 运维 Serverless
函数计算产品使用问题之设置最大实例数为1和最大并发数为20,当请求数量超过20时,系统会如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
运维 安全 Serverless
函数计算产品使用问题之怎么调整单个服务下最大允许创建的函数个数
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
运维 Serverless 数据处理
函数计算产品使用问题之设置了两个路由,如何设置优先级
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
NoSQL MongoDB 数据库
通过优化索引以消除 MongoDB 中的 "查询目标已超过1000个扫描对象/返回的文档数" 警告
MongoDB NoSQL数据库在处理复杂查询时可能出现“查询目标已超过1000个扫描对象/返回的文档数”警告。文章分析了该问题,展示了一个示例集合和相关索引,并提供了查询示例。通过`explain`命令发现查询未有效利用索引。解决方案是遵循ESR规则,创建新索引从而优化查询并消除警告。
132 1
ookie 值的修改方案
ookie 值的修改方案
84 0
|
Java 程序员 应用服务中间件
使用@AutoConfigureBefore调整配置顺序竟没生效?(上)
使用@AutoConfigureBefore调整配置顺序竟没生效?(上)
使用@AutoConfigureBefore调整配置顺序竟没生效?(上)
|
编解码 算法 前端开发
Cartographer参数调整来降低延迟的策略
Cartographer参数调整来降低延迟的策略