ElasticSearch更新查询max_compilations_per_minute除外

时间:2017-06-30 16:56:32

标签: elasticsearch

我收到了这个请求:

{
                "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),我仍然会收到限制错误吗?

谢谢,

西奥

2 个答案:

答案 0 :(得分:1)

我得到了类似的错误,后来我发现表达式中存在轻微的语法错误。修复语法错误后解决了问题。你有没有检查JSON是否有效?

答案 1 :(得分:0)

您可以配置“ script.max_compilations_per_minute”设置以增加脚本编译的限制。

PUT /_cluster/settings
{
  "transient": {
    "script.max_compilations_per_minute": 40
  }
}