我收到了这个请求:
{
"script":{
"inline":"ctx._source.music_tags=" + JSON.stringify(music_tags),
"lang":"painless"
},
"query":{
"constant_score":{
"filter":{
"term":{
"release_id": releaseId
}
}
}
}
}
正如您所看到的,我正在尝试使用某个releaseId更新所有文档。 一切正常,但一旦我尝试同时更新大量数据,我就会得到以下错误:
{
"error":{
"root_cause":[
{
"type":"circuit_breaking_exception",
"reason":"[script] Too many dynamic script compilations within one minute, max: [15/min]; please use on-disk, indexed, or scripts with parameters instead; this limit can be changed by the [script.max_compilations_per_minute] setting",
"bytes_wanted":0,
"bytes_limit":0
}
],
"type":"general_script_exception",
"reason":"Failed to compile inline script [ctx._source.music_tags=[\"25319\",\"25390\",\"25795\"]] using lang [painless]",
"caused_by":{
"type":"circuit_breaking_exception",
"reason":"[script] Too many dynamic script compilations within one minute, max: [15/min]; please use on-disk, indexed, or scripts with parameters instead; this limit can be changed by the [script.max_compilations_per_minute] setting",
"bytes_wanted":0,
"bytes_limit":0
}
},
"status":500
}
我确实试图找到有关此限制的任何信息,但我并没有完全明白。
有人可以解释为什么elasticSearch有这个限制,如果我改变这个限制有什么影响?
我可以在没有脚本的情况下更新我的文档吗?
如果我为每个请求使用参数(参见:here),我仍然会收到限制错误吗?
谢谢,
西奥
答案 0 :(得分:1)
我得到了类似的错误,后来我发现表达式中存在轻微的语法错误。修复语法错误后解决了问题。你有没有检查JSON是否有效?
答案 1 :(得分:0)
您可以配置“ script.max_compilations_per_minute”设置以增加脚本编译的限制。
PUT /_cluster/settings
{
"transient": {
"script.max_compilations_per_minute": 40
}
}