您的位置:首页 > 游戏 > 手游 > 大连企业网站哪一家好_泉州模板建站哪家好_seo经理招聘_温州seo外包公司

大连企业网站哪一家好_泉州模板建站哪家好_seo经理招聘_温州seo外包公司

2025/2/23 7:36:22 来源:https://blog.csdn.net/hnzhoujunmei/article/details/145594569  浏览:    关键词:大连企业网站哪一家好_泉州模板建站哪家好_seo经理招聘_温州seo外包公司
大连企业网站哪一家好_泉州模板建站哪家好_seo经理招聘_温州seo外包公司

因为需要向原有的es结构中增加一个检索字段,但因为历史es数据都没有该字段,需要批量刷新es的该字段,本地使用了脚本的方式进行刷新,在测试环境测试,出现了以下错误:

500 Internal Server Error: [{"error":{"root_cause":[{"type":"circuit_breaking_exception","reason":"[script] Too many dynamic script compilations within, max: [75/5m]; please use indexed, or scripts with parameters instead; this ... (812 bytes)]

这条错误信息表示在ElasticSearch中,5分钟内动态脚本编译的数量超过了允许的最大值75个。ElasticSearch设置了这个限制是为了防止因大量脚本编译导致的内存溢出和性能下降。

可能导致此错误的原因

  1. 频繁使用动态脚本‌:在查询或聚合操作中频繁使用动态脚本,尤其是当这些脚本的参数经常变化时,会导致ElasticSearch频繁编译新脚本。
  2. 脚本参数处理不当‌:如果脚本中的参数没有通过params传递,而是直接硬编码在脚本中,那么即使脚本的逻辑相同,只要参数值有变化,ElasticSearch也会认为是一个新的脚本,从而进行编译。

解决此错误的建议方法

  1. 调整配置参数‌:
    可以通过修改ElasticSearch的配置来增加允许的动态脚本编译数量。例如,将script.max_compilations_rate设置为1000/1m(表示每分钟允许1000次编译):
PUT _cluster/settings 
{"persistent": {"script.max_compilations_rate": "1000/1m"}
}
这种方法可以暂时解决问题,但可能会增加服务器的性能消耗,治标不治本!

        2‌.优化脚本使用‌:
尽量避免在脚本中使用动态参数,而是将参数通过params传递。这样可以减少ElasticSearch因参数变化而频繁编译新脚本的情况。例如:

POST my_index/_update/1
{"script": {"source": "ctx._source.name = params.name","params": {"name": "tom"}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com